蒻芨求助!为什么Bellman_ford全RE了?

P4779 【模板】单源最短路径(标准版)

prx1460 @ 2023-03-15 13:50:35

#include<bits/stdc++.h>
using namespace std;
const int M=1e4+10,N=1e4+10;
int n,m,s;
long long dis[N],u[M],v[M],w[M],cnt=1;
long long Bellman_ford(int s,int t) {
    memset(dis,0x3f,sizeof(dis));
    dis[s]=0;
    for(int i=1; i<=n-1; i++) {
        int check=0;
        for(int j=1; j<=cnt; j++) {
            if(dis[u[j]]+w[j]<dis[v[j]]) {
                dis[v[j]]=dis[u[j]]+w[j];
                check=1;
            }
        }
        if(check==0) {
            break;
        }
    }
    return dis[t];
}
int main() {
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1; i<=m; i++) {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        u[cnt]=x,v[cnt]=y,w[cnt]=z;
        cnt++;
        u[cnt]=y,v[cnt]=x,w[cnt]=z;
        cnt++;
    }
    for(int i=1;i<=n;i++){
        cout<<Bellman_ford(s,i)<<" ";
    }
    return 0;
}

by Eznibuil @ 2023-03-15 13:59:11

@pengruxia 第三行,N 和 M 小了,详见数据范围(另外这道题 BF 过不了)。


by prx1460 @ 2023-03-16 13:04:36

@Eznibuil 还是RE了。我们教练让我们练习一下


|