XLao @ 2019-10-30 21:33:53
WA:1 TLE:2
#include<iostream>
using namespace std;
const int inf=2147483647;
int n,m;
int a[105][105],ans,cnt;
int dx[5]={0,1,-1,0,0},dy[5]={0,0,0,1,-1};
int dfs(int x,int y)
{
int tmp=inf,f=0;
int go1,go2;
for(int i=1;i<=4;i++)
{
int tx=x+dx[i],ty=y+dy[i];
if(a[x][y]>a[tx][ty])
if(a[x][y]-a[tx][ty]<tmp)
f=1,go1=tx,go2=ty,tmp=a[x][y]-a[tx][ty];
}
if(!f) return cnt;
cnt++; dfs(go1,go2);
}
int main()
{
cin>>n>>m;
cnt=ans=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
a[i][0]=a[i][m+1]=a[0][j]=a[n+1][j]=inf;
cin>>a[i][j];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
ans=max(ans,dfs(i,j));
cnt=1;
}
cout<<ans;
return 0;
}