zzy_zzy @ 2023-03-25 17:26:45
RT.代码如下:
#include<bits/stdc++.h>
using namespace std;
int ti[310][310],step[310][310],dx[5]={1,-1,0,0,0},dy[5]={0,0,1,-1,0},ans=-1;
queue<pair<int,int> >q;
void bfs(){
q.push(make_pair(1,1));
step[1][1]=0;
while(q.size()){
int x=q.front().first,y=q.front().second;
q.pop();
for(int i=0;i<4;i++){
int xx=x+dx[i];
int yy=y+dy[i];
if(xx>0&&xx<=301&&yy>0&&yy<=301&&step[x][y]+1<ti[xx][yy]){
q.push(make_pair(xx,yy));
step[xx][yy]=step[x][y]+1;
if(ti[xx][yy]==INT_MAX){
ans=step[xx][yy];
return;
}
}
}
}
}
int main(){
int n;
cin>>n;
for(int i=1;i<=310;i++){
for(int j=1;j<=310;j++){
ti[i][j]=INT_MAX;
}
}
for(int i=1;i<=n;i++){
int x,y,time;
cin>>x>>y>>time;
x++,y++;
for(int j=0;j<5;j++){
int xx=x+dx[j];
int yy=y+dy[j];
ti[xx][yy]=min(ti[xx][yy],time);
}
}
bfs();
cout<<ans;
return 0;
}