int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int map[310][301]={0};
int dist[310][310]={0};
int vis[310][310]={0};
int f[310][310]={0};
int q[310*310]={0};
int main()
{
int n,i,j;
scanf("%d",&n);
for(j=1;j<=n;j++)
{
int x,y,t;
scanf("%d%d%d",&x,&y,&t);
if(map[x][y]>t||map[x][y]==0)
{
map[x][y]=t;
vis[x][y]=1;
}
for(i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>=0&&xx<=301&&yy>=0&&yy<=301)
if(map[xx][yy]>t||map[xx][yy]==0)
{
map[xx][yy]=t;
vis[xx][yy]=1;
}
}
}
int front=0,rear=0;
q[rear++]=0;
f[0][0]=1;
int falg=0;
while(front<rear)
{
int x=q[front]/100,y=q[front]%100;
for(i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>=0&&yy>=0&&xx<=301&&yy<=301)
if(!f[xx][yy])
{
if(vis[xx][yy]&&map[xx][yy]>dist[x][y]+1)
{
q[rear++]=xx*100+yy;
dist[xx][yy]=dist[x][y]+1;
f[xx][yy]=1;
}
else if(!vis[xx][yy])
{
printf("%d",dist[x][y]+1);
falg=1;
break;
}
}
}
front++;
if(falg) break;
}
if(!falg)
printf("-1");
//system("pause");
return 0;
}
你们给看看 为什么第五组数据过不了啊