蒟蒻求助,为什么会RE,线下测过了

P2895 [USACO08FEB] Meteor Shower S

Aakkosetsumussa @ 2023-07-11 14:44:34

#include<bits/stdc++.h>
using namespace std;
typedef long long inr;
const inr maxn=7e2+10;
inr m,T[maxn][maxn];
struct node {
    inr x,y;
};
const inr dx[]= {0,1,-1,0},dy[]= {1,0,0,-1};
inr ans=1e9,s[maxn][maxn];
queue<node> q;
int main() {
    cin>>m;
    memset(s,-1,sizeof(s));
    s[0][0]=0;
    memset(T,10001,sizeof(T));
    for(inr i=1,x,y,t; i<=m; i++) {
        cin>>x>>y>>t;
        if(x>=0&&y>=0) T[x][y]=min(T[x][y],t);
        for(inr j=0; j<4; j++) {
            inr tx=x+dx[j],ty=y+dy[j];
            if(tx>=0&&ty>=0) T[tx][ty]=min(T[tx][ty],t);
        }
    }
    q.push((node) {
        0,0
    });
    while(!q.empty()) {
        node u=q.front();
        q.pop();
        for(inr j=0; j<4; j++) {
            inr tx=u.x+dx[j],ty=u.y+dy[j];
            if(tx<0||ty<0||s[tx][ty]!=-1||s[u.x][u.y]+1>=T[tx][ty]) continue;
            s[tx][ty]=s[u.x][u.y]+1;
            q.push((node) {
                tx,ty
            });
        }
    }
    for(inr i=0; i<=305; i++) for(inr j=0; j<=305; j++)
            if(T[i][j]>1000&&s[i][j]!=-1) ans=min(ans,s[i][j]);
    if(ans==1e9) cout<<"-1";
    else cout<<ans;
    return 0;
}

by catandcode @ 2023-07-11 14:50:01

@Aakkosetsumussa memset(T,10001,sizeof(T));这句不能用,memset并不是能赋任意值,其他有没有没看出来。


by Aakkosetsumussa @ 2023-07-11 14:52:42

@catandcode 谢谢大佬,刚看出来,换成循环赋值就对了


|