社区讨论
蒟蒻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 条回复,欢迎继续交流。
正在加载回复...