Xxzxx @ 2018-05-18 23:05:54
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define inf 2147483647
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}},n,x,y,t,map[310][310],flag[310][310];
struct node{int x,y,dep;}q[50010];
void bfs()
{
int f=-1,r=0;
q[0].x=0;
q[0].y=0;
q[0].dep=0;
flag[0][0]=1;
if(map[0][0]==inf){cout<<0;return;}
while(f<r)
{
//cout<<f<<" "<<r<<endl;
node temp=q[++f];
for(int i=0;i<4;i++)
{
int nx=temp.x+dir[i][0],ny=temp.y+dir[i][1];
if(flag[nx][ny]==0||nx<0||ny<0||temp.dep+1>=map[nx][ny]) continue;
if(map[nx][ny]==inf)
{cout<<temp.dep;
return;
}
q[++r].dep=temp.dep+1;
q[r].x=nx;
q[r].y=ny;
flag[nx][ny]=1;
}
}
cout<<-1;
}
int main()
{
for(int i=0;i<=303;i++)
for(int j=0;j<=303;j++)
map[i][j]=inf;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>y>>t;
map[x][y]=min(map[x][y],t);
for(int j=0;j<4;j++)
{
int nx=x+dir[j][0],ny=y+dir[j][1];
if(nx>0&&ny>0)
map[nx][ny]=min(map[nx][ny],t);
}
}
bfs();
return 0;
}
by WSEDSWZD @ 2018-05-18 23:07:31
这么晚了不睡觉干啥呢
by WSEDSWZD @ 2018-05-18 23:09:21
把数组开到500试一下呢
by WSEDSWZD @ 2018-05-18 23:11:12
你写的这是什么鬼啊,flag数组那里写反了呀
by Xxzxx @ 2018-05-18 23:21:15
此贴终结
by Xxzxx @ 2018-05-18 23:22:45
楼主手残……@WA自动机