basachenboming @ 2022-01-07 22:16:42
#include<bits/stdc++.h>
using namespace std;
int a[201][201];
int n,m;
int maxx[201][201]={-1};
inline int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x*f;
}
int k;
int check;
void dfs(int tot,int x,int y)
{
k=tot;
check=0;
if(maxx[x][y]<tot)
{
maxx[x][y]=tot;
}
if(a[x-1][y]<a[x][y]&&maxx[x-1][y]<=tot&&x-1>0&&x-1<=n&&y>0&&y<=m)
{
dfs(tot+1,x-1,y);
}
if(a[x+1][y]<a[x][y]&&maxx[x+1][y]<=tot&&x+1>0&&x+1<=n&&y>0&&y<=m)
{
dfs(tot+1,x+1,y);
}
if(a[x][y-1]<a[x][y]&&maxx[x][y-1]<=tot&&x>0&&x<=n&&y-1>0&&y-1<=m)
{
dfs(tot+1,x,y-1);
}
if(a[x][y+1]<a[x][y]&&maxx[x][y+1]<=tot&&x>0&&x<=n&&y+1>0&&y+1<=m)
{
dfs(tot+1,x,y+1);
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
a[i][j]=read();
}
}
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
dfs(1,i,j);
ans=max(ans,k);
}
}
cout<<ans;
return 0;
}