同第二个点RE...
```cpp
#include<bits/stdc++.h>
using namespace std;
struct rec{
int x,y;
};
int n,m,ans,f[105][105],h,t;
rec q[10005];
int Map[105][105];
int max(int x,int y){
if(x>y)return(x);return(y);
}
void push(int x,int y,int len){
if(x<=0 || y<=0 || x>n || y>m)return;
q[++t].x=x;q[t].y=y;
f[x][y]=max(f[x][y],len);
ans=max(ans,len);
}
void bfs(int x,int y){
if(f[x][y]>0)return;
h=0;t=0;int xx,yyy,fff;
push(x,y,1);
while(h<=t){
xx=q[++h].x;yyy=q[h].y;fff=f[xx][yyy]+1;
if(Map[xx+1][yyy]<Map[xx][yyy])push(xx+1,yyy,fff);
if(Map[xx-1][yyy]<Map[xx][yyy])push(xx-1,yyy,fff);
if(Map[xx][yyy+1]<Map[xx][yyy])push(xx,yyy+1,fff);
if(Map[xx][yyy-1]<Map[xx][yyy])push(xx,yyy-1,fff);
}
return;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%d",&Map[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
bfs(i,j);
printf("%d",ans);
}
```
by 张奕涵 @ 2018-06-19 14:04:37