#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=4000;
char g[N][N];
bool vis[N][N];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
int dist[N][N];
int main()
{
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>g[i][j];
}
}
deque<pair<int,int>> q;
vis[n-1][m-1]=1;
q.push_back({n-1,m-1});
int ans=0;
while(q.size())
{
auto it=q.front();
q.pop_front();
int x=it.first,y=it.second;
ans=max(ans,dist[x][y]);
for(int i=0;i<4;i++)
{
int nx=x+dx[i],ny=y+dy[i];
if(nx>=0 and ny>=0 and nx<n and ny<m and !vis[nx][ny])
{
if(g[nx][ny]==g[x][y])
{
// cost zero
vis[nx][ny]=1;
dist[nx][ny]=dist[x][y];
q.push_front({nx,ny});
}
else{
dist[nx][ny]=dist[x][y]+1;
q.push_back({nx,ny});
}
}
}
}
cout<<ans<<endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |