이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
int H, W;
vector<string> snow;
vector<vector<int>> visited;
int bfs(){
char animal = snow[H-1][W-1];
queue<pair<int, int>> Q;
int numNew = 0;
Q.push({H-1, W-1});
snow[H-1][W-1] = animal^'F'^'R';
while(!Q.empty()){
pair<int, int> actual = Q.front(); Q.pop();
int x = actual.first;
int y = actual.second;
if(!visited[actual.first][actual.second]){
visited[actual.first][actual.second] = 1;
numNew++;
}
if(x){
if(snow[x-1][y] == animal){
snow[x-1][y] = animal^'R'^'F';
Q.push({x-1, y});
}
}
if(y){
if(snow[x][y-1] == animal){
snow[x][y-1] = animal^'R'^'F';
Q.push({x, y-1});
}
}
if(x < (H-1)){
if(snow[x+1][y] == animal){
snow[x+1][y] = animal^'F'^'R';
Q.push({x+1, y});
}
}
if(y < (W-1)){
if(snow[x][y+1] == animal){
snow[x][y+1] = animal^'R'^'F';
Q.push({x, y+1});
}
}
}
return numNew;
}
int main(){
cin >> H >> W;
visited = vector<vector<int>>(H, vector<int>(W, 0));
snow = vector<string>(H);
for(int i = 0; i < H; ++i)cin >> snow[i];
int ans = 0;
while(bfs())ans++;
cout << ans << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |