nothingness @ 2018-07-12 19:46:29
P1434第二个点WA(数据不能下载qwq) 附评测记录
#include "bits/stdc++.h"
#define N 1000001
#define M 1002
#define map my_map
using namespace std;
int n,m,map[M][M],ans=-1,son[M][M];
int qx[N],qy[N],f[N],h,t;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int push(int x,int y)
{
t++;
qx[t]=x;
qy[t]=y;
f[t]=f[h]+1;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<=n+1;i++)
for(int j=0;j<=m+1;j++)
map[i][j]=INT_MAX;
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++)
for(int k=0;k<4;k++)
if(map[i][j]<map[i+dx[k]][j+dy[k]]&&map[i+dx[k]][j+dy[k]]!=INT_MAX)
son[i][j]=1;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(!son[i][j])
{
h=0,t=0;
push(i,j);
do
{
h++;
if(map[qx[h]][qy[h]]>map[qx[h]+1][qy[h]])
push(qx[h]+1,qy[h]);
if(map[qx[h]][qy[h]]>map[qx[h]][qy[h]+1])
push(qx[h],qy[h]+1);
if(map[qx[h]][qy[h]]>map[qx[h]-1][qy[h]])
push(qx[h]-1,qy[h]);
if(map[qx[h]][qy[h]]>map[qx[h]][qy[h]-1])
push(qx[h],qy[h]-1);
}
while(h<t);
ans=max(ans,f[h]);
}
printf("%d",ans);
return 0;
}