董承文 @ 2023-11-11 22:00:41
#include<bits/stdc++.h>
using namespace std;
int n,a[310][310],X[4]={-1,0,1,0},Y[4]={0,1,0,-1},ans,vis[310][310];
struct node
{
int x,y,step;
};
queue<node>q;
int main()
{
cin>>n;
for(int i=0;i<=305;i++)
for(int j=0;j<=305;j++)
a[i][j]=1e9;
for(int i=1;i<=n;i++)
{
int x,y,t;
cin>>x>>y>>t;
a[x][y]=min(a[x][y],t);
for(int j=0;j<4;j++)
{
int xx=x+X[j],yy=y+Y[j];
if(xx>=0&&yy>=0)
a[xx][yy]=min(a[xx][yy],t);
}
}
if(a[0][0]!=0&&a[0][1]!=1&&a[1][0]!=1)
{
node t;
t.x=0,t.y=0,t.step=0;
q.push(t);
}
vis[0][0]=1;
while(!q.empty())
{
node t;
t=q.front();
q.pop();
//cout<<t.x<<' '<<t.y<<' '<<t.step<<endl;
for(int i=0;i<4;i++)
{
int xx=t.x+X[i],yy=t.y+Y[i];
if(xx>=0&&yy>=0&&vis[xx][yy]==0&&a[xx][yy]>t.step+1)
{
if(a[xx][yy]==1e9)
{
cout<<t.step+1;
return 0;
}
vis[xx][yy]=1;
node tt;
tt.x=xx,tt.y=yy,tt.step=t.step+1;
q.push(tt);
}
}
}
cout<<-1;
return 0;
}
by _txb_ @ 2023-11-11 22:23:28
见这里