递归SPFA求助
查看原帖
递归SPFA求助
125018
ztx__楼主2020/8/5 14:25

明明裸的Bellman-Ford都能过,为什么递归SPFA过不了?怀疑人生

#include <bits/stdc++.h>
using namespace std;
#define MAXN 100005
#define INF 0x7fffffff
vector<pair<int,int> > g[MAXN];
int n,m,s,dis[MAXN];
void SPFA(int u){
    for(int i=0;i<g[u].size();i++){
        int v=g[u][i].first,w=g[u][i].second;
        if(dis[v]>dis[u]+w){
            dis[v]=dis[u]+w;
            SPFA(v);
        }
    }
}
int main(){
    scanf("%d%d%d",&n,&m,&s);
    for(int i=1;i<=m;i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        g[u].push_back(make_pair(v,w));
    }
    fill(dis+1,dis+1+n,INF);
    dis[s]=0;
    SPFA(s);
    for(int i=1;i<=n;i++){
        printf("%d ",dis[i]);
    }
    printf("\n");
    return 0;
}
2020/8/5 14:25
加载中...