shb20111113 @ 2023-07-16 22:24:48
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int M;
long long a[400][400];
long long b[400][400];
int dx[4]= {0,0,1,-1};
int dy[4]= {1,-1,0,0};
int X,Y,T;
queue <int>qx;
queue <int>qy;
int bfs(int x,int y,int z,int max1) {
qx.push(x);
qy.push(y);
while(!qx.empty()) {
int xx=qx.front();
int yy=qy.front();
for(int i=0; i<4; i++) {
/*参考*/if(b[xx+dx[i]][yy+dy[i]]==-1&&a[xx+dx[i]][yy+dy[i]]>b[xx][yy]+1&&xx+dx[i]>=0&&xx+dx[i]<=301&&yy+dy[i]>=0&&yy+dy[i]<=301) {
b[xx+dx[i]][yy+dy[i]]=b[xx][yy]+1;
qx.push(xx+dx[i]);
qy.push(yy+dy[i]);
}
}
qx.pop();
qy.pop();
}
z++;
return z;
}
int main() {
cin>>M;
memset(a,100000,sizeof(a));
memset(b,-1,sizeof(b));
b[0][0]=0;
int max11=0;
for(int i=0; i<M; i++) {
cin>>X>>Y>>T;
for(int j=0; j<4; j++) {
if(a[X+dx[i]][Y+dy[i]]>T&&X+dx[i]>=0&&X+dx[i]<=301&&Y+dy[i]>=0&&Y+dy[i]<=301) {
a[X+dx[i]][Y+dy[i]]=T;
}
}
}
bfs(0,0,1,max11);
int min=1000000;
for(int i=0;i<=301;i++)
{
for(int j=0;j<=301;j++)
{
if(min>b[i][j]&&b[i][j]!=-1&&a[i][j]==100000)min=b[i][j];
}
}
if(min!=1000000)cout<<min;
else cout<<-1;
return /*3221225725*/0;
}
/*
*/```
一个WA,一个AC,另外十二个都是RE
by shb20111113 @ 2023-07-17 18:11:43
样例输入:
4
0 0 2
2 1 2
1 1 2
0 3 5
程序输出:
-1