#include<bits/stdc++.h>
#define i1n for(int i=1;i<=n;++i)
#define j1m for(int j=1;j<=m;++j)
#define ll long long
using namespace std;
ll n,m,a[1005][1005],dp[1005][1005];
bool vis[1005][1005];
ll maxi(ll x,ll y)
{
return x>=y?x:y;
}
ll dfs(ll x,ll y)
{
if(x<1||y<1||x>n||y>m||vis[x][y])
return 0;
if(dp[x][y]!=-1)
return dp[x][y];
ll mx=-9e18;
vis[x][y]=true;
if(dp[x-1][y]<a[x][y]) mx=maxi(mx,dfs(x-1,y));
if(dp[x][y-1]<a[x][y]) mx=maxi(mx,dfs(x,y-1));
if(dp[x+1][y]<a[x][y]) mx=maxi(mx,dfs(x+1,y));
if(dp[x][y+1]<a[x][y]) mx=maxi(mx,dfs(x,y+1));
vis[x][y]=false;
return dp[x][y]=mx+1;
}
int main()
{
memset(dp,-1,sizeof(dp));
cin>>n>>m;
i1n
{
j1m
{
cin>>a[i][j];
}
}
ll mx=-9e18;
i1n
{
j1m
{
mx=max(mx,dfs(i,j));
}
}
cout<<mx;
return 0;
}
我用记搜写的