You are on page 1of 1

#include <iostream>

#include <vector>
using namespace std;
int vis[55][55],arr[55][55];
int h,w;
int ans=0;
int cnt=1;

void dfs(int x, int y){


vis[x][y]=1;
for (int nx=-1;nx<=1;nx++){
for (int ny=-1;ny<=1;ny++){
if ((nx<0)||(ny<0)||(nx>=w)||(ny>=h)) continue;
if ((vis[nx][ny]==0)&& (arr[nx][y]=arr[x][y]+1)) dfs(nx,ny);
else ans= max(arr[x][y]+1,ans);

}
}
}

int main(){
while (1){

cin >> h >> w;


if ((h==0)&&(w==0)) return 0;
for (int m=0;m<h;m++){
for (int n=0;n<w;n++){
char s;
cin >> s;
arr[n][m] = s-'A';

}
}
/*
for (int m=0;m<h;m++){
for (int n=0;n<w;n++){
cout << arr[n][m];
}
cout << '\n';
}
/**/
for (int m=0;m<h;m++){
for (int n=0;n<w;n++){
if (arr[n][m]==0) dfs(n,m);
}
}
cout << "Case "<<cnt<<": "<<ans<<'\n';
ans =0;
cnt++;
}
return 0;
}

You might also like