社区讨论

蒟蒻SPFA只过两个求助

P3371【模板】单源最短路径(弱化版)参与者 4已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@mi7dha4w
此快照首次捕获于
2025/11/20 19:53
4 个月前
此快照最后确认于
2025/11/20 19:53
4 个月前
查看原帖
#include #include #include #include #include const int MN=10010; using namespace std; int dis[MN]; bool in[MN]; int n,m,s; struct Edge { int from,to,l; Edge(int from=0,int to=0,int l=0):from(from),to(to),l(l) {}; } ; vector G[MN]; void SPFA(int ss) { queue q; for(int i=1; i<=n; i++)dis[i]=2147483647; memset(in,false,sizeof(in)); q.push(ss); dis[ss]=0; in[ss]=true; while(!q.empty()) { int u=q.front(); q.pop(); in[u]=false; for(int unsigned i=0; i<G[u].size(); i++) { int v=G[u][i].to; if(dis[v]>dis[u]+G[u][i].l) { dis[v]=dis[u]+G[u][i].l; if(!in[i]) { in[i]=true; q.push(v); } } } } } int main() { cin>>n>>m>>s; for(int i=1; i<=n; i++)G[i].clear(); for(int i=1; i<=m; i++) { int a,b,l; cin>>a>>b>>l; G[a].push_back(Edge(a,b,l)); } SPFA(s); for(int i=1; i<=n; i++) { cout<<dis[i]<<" "; } return 0; } 求dalao帮忙找找哪里有错误

回复

6 条回复,欢迎继续交流。

正在加载回复...