#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
#define endl '\n'
const double PI = acos(-1.0);
typedef pair<int,int> PII;
const int INF = 0x3f3f3f3f;
const int modn = 1e9;
const int N = 1e4+6;
int m[305][305],vis[305][305];
struct node{
int x,y,t;
}s;
int fx[4]={0,0,1,-1};
int fy[4]={1,-1,0,0};
void solve(){
int n;
cin>>n;
int x,y,t;
//memset(m,-1,sizeof m);
for(int i=0; i<=302; i++)
for(int j=0; j<=302; j++)
m[i][j]=-1;
//memset(vis,0,sizeof vis);
for(int i=1;i<=n;i++) {
cin >> x >> y >> t;
if (m[x][y] == -1 || t < m[x][y])
m[x][y] = t;
for (int j = 0; j < 4; j++) {
int nx = x + fx[j];
int ny = y + fy[j];
if ((t<m[nx][ny]||m[nx][ny]==-1)&&nx>=0&&ny>=0) {
m[nx][ny] = t;
}
}
}
queue<node>q;
s.x=0,s.y=0,s.t=0;
vis[0][0]=1;
q.push(s);
while(!q.empty()){
node fir = q.front();
q.pop();
for(int i=0;i<4;i++){
int nx = fir.x+fx[i];
int ny = fir.y+fy[i];
//int nt = fir.t+1;
if(nx>=0&&ny>=0&&vis[nx][ny]==0&&(fir.t+1<m[nx][ny])||m[nx][ny]==-1){
vis[nx][ny]=1;
node now;
now.x=nx,now.y=ny,now.t=fir.t+1;
q.push(now);
if(m[nx][ny]==-1){
cout<<now.t<<endl;
return;
}
}
}
}
cout<<-1<<endl;
}
signed main(){
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int t=1;
//cin>>t;
//getchar();
while(t--){
solve();
}
return 0;
}
以上是ac代码是没有问题的,但是将一开始的初始化中的i和j改成305之后全wa了,这是为什么,请dalao解答一下0.0,被折磨一个一个多小时了,万万没想到这里有问题。。