//
// Created by Ahmet Efendioğlu on 29.09.2025.
//
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int dx[4]={-1,0,0,1};
const int dy[4]={0,1,-1,0};
int h,w;
int inside(int a,int b) {
if (a>=0 && a<h && b>=0 && b<w) {
return 1;
}
return 0;
}
int32_t main() {
cin>>h>>w;
string grid[h];
int visited[h][w];
for (int i=0;i<h;i++) {
for (int j=0;j<w;j++) {
visited[i][j]=0;
}
}
for (int i=0;i<h;i++) {
cin>>grid[i];
}
int res=0;
queue<pair<int,int>>q;
visited[0][0]=1;
q.push({0,0});
while (!q.empty()) {
auto u=q.front();
q.pop();
res=max(res,visited[u.first][u.second]);
for (int i=0;i<=3;i++) {
int a=dx[i]+u.first;
int b=dy[i]+u.second;
if (inside(a,b) && visited[a][b]==0) {
if (grid[u.first][u.second] == grid[a][b]) {
visited[a][b]=visited[u.first][u.second];
q.push({a,b});
}
else {
visited[a][b]=visited[u.first][u.second]+1;
q.push({a,b});
}
}
}
}
cout<<res<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |