求调!!!

P2895 [USACO08FEB] Meteor Shower S

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

|