#include <bits/stdc++.h>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
vector<string> grid(n);
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
for (int i = 0; i<n; i++){
cin >> grid[i];
}
vector<vector<int>> dist(n, vector<int>(m, INT_MAX));
dist[0][0]=0;
deque<pair<int, int>> dq;
dq.push_front({0, 0});
while (!dq.empty()){
auto [x, y] = dq.front();
dq.pop_front();
for (int k = 0; k<4; k++){
int nx = x + dx[k];
int ny = y + dy[k];
if (nx<0 || ny<0 || nx>=n || ny >=m || grid[nx][ny]=='.') continue;
int w = (grid[x][y]!=grid[nx][ny]);
if (dist[x][y] + w < dist[nx][ny]){
dist[nx][ny] = dist[x][y] + w;
if (!w){
dq.push_front({nx, ny});
}
else dq.push_back({nx, ny});
}
}
}
int ma = 0;
for (auto i : dist){
for (auto j : i){
if (j!=INT_MAX) ma = max(ma, j);
}
}
cout << ma+1 << endl;
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |