結果

問題 No.421 しろくろチョコレート
ユーザー Yazaten
提出日時 2016-09-22 21:07:26
言語 C++11
(gcc 13.3.0)
結果
AC  
実行時間 6 ms / 2,000 ms
コード長 1,662 bytes
コンパイル時間 1,668 ms
コンパイル使用メモリ 163,536 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-09-23 07:09:34
合計ジャッジ時間 3,185 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 65
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
#define rep(i,n) for(ll i=0;i<(ll)(n);i++)
#define all(a) (a).begin(),(a).end()
#define pb push_back
#define INF (1e9+1)
//#define INF (1LL<<59)
//2 verified AOJ GRL_7_A
#define MAX_V 2500
vector<int> G[MAX_V];
int match[MAX_V];
bool used[MAX_V];
void add_edge(int u,int v){
G[u].pb(v);
G[v].pb(u);
}
// DFS
bool dfs(int v){
used[v]=true;
rep(i,G[v].size()){
int u=G[v][i],w=match[u]; //u:v , w:u
if(w<0 || (!used[w] && dfs(w))){ //udfsw使 w(=)
match[v]=u;
match[u]=v;
return true;
}
}
return false;
}
int bipartite_matching(int V){
int res=0;
rep(i,MAX_V)match[i]=-1;
rep(v,V){
if(match[v]<0){
rep(i,MAX_V)used[i]=0;
if( dfs(v) ) res++; //res+=1
}
}
return res;
}
int main(){
int h,w;
cin>>h>>w;
vector<string> vs(h);
rep(i,h)cin>>vs[i];
int white=0,black=0;
rep(i,h)rep(j,w){
if(vs[i][j]=='w')white++;
if(vs[i][j]=='b')black++;
}
rep(i,h){
rep(j,w){
if(vs[i][j]=='b'){
int dy[]={1,0,-1,0};
int dx[]={0,1,0,-1};
rep(k,4){
int ddy = i+dy[k];
int ddx = j+dx[k];
if( ddx>=0 && ddy>=0 && ddx<w && ddy<h &&vs[ddy][ddx]=='w' ){
add_edge(i*w+j,ddy*w+ddx);
}
}
}
}
}
int res = bipartite_matching(h*w);
white -= res;
black -= res;
cout<<res*100+min(white,black)*10+abs(white-black)<<endl;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0