#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define For(i,j,k) for (int i=j;i<=k;i++)
const int dmax=1501,d[5][2]={{0,0},{1,0},{0,1},{-1,0},{0,-1}};
bool p[dmax];
char a[dmax][dmax];
int ans,n,m;
void dfs(int x,int y,int sum){
if (sum>ans)
ans=sum;
For(i,1,4){
int tx=x+d[i][0],ty=y+d[i][1];
if (tx<1 || ty<1 || tx>n || ty>m || p[a[tx][ty]]==1)
continue;
p[a[tx][ty]]=1;
dfs(tx,ty,sum+1);
p[a[tx][ty]]=0;
}
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
getchar();
ans=0;
memset(p,0,sizeof(p));
memset(a,0,sizeof(a));
For(i,1,n){
For(j,1,m)
a[i][j]=getchar();
getchar();
}
p[a[1][1]]=1;
dfs(1,1,1);
printf("%d\n",ans);
}
return 0;
}
POJ1154 深搜水题
最新推荐文章于 2019-03-09 13:25:36 发布