Mr_Ender @ 2020-03-27 15:23:45
#include<iostream>
using namespace std;
struct node{
int x;
int y;
int t;
}met[50005];
struct node que[160005];
struct node v,v1;
int book[405][405];
int map[405][405];
int main(){
int m,i,j,t,fro=1,beh=2,k=0,i1,j1;
cin>>m;
for(i=1;i<=m;i++){
cin>>met[i].x>>met[i].y>>met[i].t;
map[met[i].x][met[i].y]=1;
v1=met[i];
v1.x++;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=1;
}
v1=met[i];
v1.x--;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=1;
}
v1=met[i];
v1.y++;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=1;
}
v1=met[i];
v1.y--;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=1;
}
}
que[fro].x=0;
que[fro].y=0;
que[fro].t=0;
book[0][0]=1;
t=0;
while(fro<beh){
for(i=1;i<=m;i++){
if(met[i].t==t){
map[met[i].x][met[i].y]=2;
v1=met[i];
v1.x++;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=2;
}
v1=met[i];
v1.x--;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=2;
}
v1=met[i];
v1.y++;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=2;
}
v1=met[i];
v1.y--;
if(v1.x>=0&&v1.y>=0){
map[v1.x][v1.y]=2;
}
}
}
if(map[que[fro].x][que[fro].y]==0){
cout<<que[fro].t;
k=1;
break;
}
v=que[fro];
v.x++;
v.t++;
if(v.x>=0&&v.y>=0){
if(map[v.x][v.y]!=2){
if(book[v.x][v.y]==0){
book[v.x][v.y]=1;
que[beh]=v;
beh++;
}
}
}
v=que[fro];
v.x--;
v.t++;
if(v.x>=0&&v.y>=0){
if(map[v.x][v.y]!=2){
if(book[v.x][v.y]==0){
book[v.x][v.y]=1;
que[beh]=v;
beh++;
}
}
}
v=que[fro];
v.y++;
v.t++;
if(v.x>=0&&v.y>=0){
if(map[v.x][v.y]!=2){
if(book[v.x][v.y]==0){
book[v.x][v.y]=1;
que[beh]=v;
beh++;
}
}
}
v=que[fro];
v.y--;
v.t++;
if(v.x>=0&&v.y>=0){
if(map[v.x][v.y]!=2){
if(book[v.x][v.y]==0){
book[v.x][v.y]=1;
que[beh]=v;
beh++;
}
}
}
t++;
fro++;
}
if(k==0){
cout<<-1;
}
return 0;
}
by GsjzTle @ 2020-03-27 15:30:39
...
by bovine__kebi @ 2020-03-27 15:39:53
这有几百行啊。。。
by huansen666666 @ 2020-03-27 16:01:29
写个函数好不好QAQ