#include<bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
#define int long long
using namespace std;
const int N=4005;
int n,m,dx[]={-1,0,1,0},dy[]={0,1,0,-1},vis[N][N],mx;
char c[N][N];
signed main(void){
exoworldgd;
cin>>n>>m;
for(int i=0;i<n;i++)cin>>c[i];
deque<array<int,3>>q;
q.push_back({1,0,0});
while(q.size()){
auto[w,x,y]=q.front();q.pop_front();
if(vis[x][y])continue;
vis[x][y]=w;
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m&&!vis[nx][ny]&&c[nx][ny]^'.'){
if(c[nx][ny]==c[x][y])q.push_front({w,nx,ny});
else q.push_back({w+1,nx,ny});
}
}
}
for(int i=0;i<n;i++)for(int j=0;j<m;j++)mx=max(mx,vis[i][j]);
cout<<mx;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |