在初始化的时候i和j开302AC了,但是305wa了?求救

P2895 [USACO08FEB] Meteor Shower S

LumenOvO @ 2021-08-21 02:22:29

#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,被折磨一个一个多小时了,万万没想到这里有问题。。


by 违规用户名76G!ihcm @ 2021-08-21 03:00:27

@LumenOvO 305就越界到别的数组了,你定的数组下标0到304


by 信守天下 @ 2021-08-21 07:52:01

@LumenOvO 你开305的数组,下标就是0~304,没有第305号位


by flowerletter @ 2021-08-21 08:07:06

@违规用户名76G!ihcm 太强了%%%


by 违规用户名76G!ihcm @ 2021-08-21 09:29:42

@ღmjytxdyღ orz


by LumenOvO @ 2021-08-21 11:13:59

@违规用户名76G!ihcm 我尝试了一下把302换成304.。还是连样例都不对,而且我直接用memset的话,也是样例都过不去。。


by LumenOvO @ 2021-08-21 11:14:29

@信守天下 我尝试了一下把302换成304.。还是连样例都不对,而且我直接用memset的话,也是样例都过不去。。


by LumenOvO @ 2021-08-21 12:31:01

破案了。。。 在bfs中的if语句里,我的小括号没有括全。。导致了一系列问题。。是我自己眼睛出问题了,这都开不出来


|