小炫羊 @ 2018-03-06 12:59:46
#include<cstdio>
#include<cstring>
int n,k,ma[110][110],s[110][110],max=0;
struct nod{int x,y,t;}a[10010];
int dx[5]={0,1,0,-1,0};
int dy[5]={0,0,1,0,-1};
int f[110][110];
void dfs(int x,int y)
{
int tou=1,wei=2;
a[tou].x=x;a[tou].y=y;a[tou].t=1;
f[x][y]=1;
while(tou!=wei)
{
int sx=a[tou].x,sy=a[tou].y;
for(int i=1;i<=4;i++)
{
int fx=sx+dx[i],fy=sy+dy[i];
if(fx<1||fy<1||fx>n||fy>k||ma[fx][fy]>=ma[sx][sy])continue;
if(s[fx][fy]>a[tou].t)continue;
s[fx][fy]=a[tou].t;
if(max<a[tou].t)max=a[tou].t;
if(max==n*k)return;
if(f[fx][fy]==0)
{
f[fx][fy]=1;
a[wei].x=fx;a[wei].y=fy;
a[wei].t=a[tou].t+1;
wei++;
if(wei>n*k+1)wei=1;
}
}
f[a[tou].x][a[tou].y]=0;
tou++;
if(tou>n*k+1)tou=1;
}
}
int main()
{
scanf("%d %d",&n,&k);
memset(s,0,sizeof(s));
for(int i=1;i<=n;i++)for(int j=1;j<=k;j++)scanf("%d",&ma[i][j]);
for(int i=1;i<=n;i++)for(int j=1;j<=k;j++)dfs(i,j);
printf("%d",max+1);
}