結果
| 問題 |
No.421 しろくろチョコレート
|
| ユーザー |
gigime
|
| 提出日時 | 2016-09-10 05:54:07 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,754 bytes |
| コンパイル時間 | 2,095 ms |
| コンパイル使用メモリ | 176,020 KB |
| 実行使用メモリ | 13,952 KB |
| 最終ジャッジ日時 | 2024-11-16 19:40:46 |
| 合計ジャッジ時間 | 106,170 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 WA * 15 TLE * 34 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define FOR(i,l,r) for(int i = (l);i < (r);i++)
#define PB push_back
#define MP make_pair
#define ALL(x) (x).begin(),(x).end()
typedef long long ll;
int N,M;
vector<string> board;
int max_cost [50] [50];
bool vis [50] [50];
const int dx [] = {0,1,0,-1};
const int dy [] = {-1,0,1,0};
bool in_range(int y,int x)
{
return y >= 0 && y < N && x >= 0 && x < M;
}
pair<int,int> bfs(int ny,int nx)
{
queue< pair<int,int> > q;
deque< deque<bool> > seen(N,deque<bool>(M,false));
q.push(MP(ny,nx));
pair<int,int> res;
while(q.empty() == false){
int y = q.front().first,x = q.front().second;
q.pop();
if(seen [y] [x]) continue;
seen [y] [x] = true;
res = MP(y,x);
FOR(i,0,4){
int yy = y + dy [i],xx = x + dx [i];
if(in_range(yy,xx) && board [yy] [xx] != '.'){
q.push(MP(yy,xx));
}
}
}
return res;
}
int dfs(int y,int x,bool flag)
{
if(vis [y] [x] == true) return 0;
if(board [y] [x] == '.') return 0;
vis [y] [x] = true;
int res = 0;
FOR(i,0,4){
int yy = y + dy [i],xx = x + dx [i];
if(in_range(yy,xx)){
res = max(dfs(yy,xx,flag),res);
}
}
vis [y] [x] = flag;
return res + 1;
}
int main()
{
cin.tie(0);
ios::sync_with_stdio(false);
cin >> N >> M;
board.resize(N);
int black = 0,white = 0;
FOR(i,0,N){
cin >> board [i];
black += count(ALL(board [i]),'b');
white += count(ALL(board [i]),'w');
}
int ans = 0;
FOR(i,0,N){
FOR(j,0,M){
pair<int,int> pos = bfs(i,j);
int y = pos.first,x = pos.second;
int res = dfs(y,x,false);
ans += res / 2 * 100;
black -= res / 2;
white -= res / 2;
dfs(y,x,true);
}
}
ans += min(black,white) * 10;
ans += max(black,white) - min(black,white);
cout << ans << endl;
return 0;
}
gigime