明明裸的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;
}