• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~

C语言 【C with STL】 单源最短路之SPFA算法

JiansYuan

【Lv:3】

注册
2020/05/09
消息
19
金粒
4,819金粒
呃呃呃
[MD]
```cpp
#include <bits/stdc++.h>
using namespace std;
const int N = 10005;
const int INF = 0x3f3f3f;
vector<pair<int, int> > g[N];
int d[N], cnt[N];
bool vis[N];
int main(){
int n, m, s;
scanf("%d %d %d", &n, &m, &s);
for(int i = 0; i < m; i++) {
int u, v, w;
scanf("%d %d %d", &u, &v, &w);
g.push_back({v, w});
}
for(int i = 1; i <= n; i++) {
vis = false;
d = INF;
cnt = 0;
}
d = 0;
queue<int> q;
q.push(s);
bool flag = false;
while(q.size()) {
int u = q.front();
q.pop();
vis = false;
for(auto i : g) {
int v = i.first, w = i.second;
if(d[v] > d + w){
d[v] = d + w;
cnt[v]++;
if(cnt[v] > n) flag = true;
if(!vis[v]){
vis[v] = true;
q.push(v);
}
}
}
}
if(flag) printf("ERROR!\n");
else for(int i=1;i<=n;i++) printf("%d ", d);
return 0;
}

```
[/MD]
 

在线会员

  • 菠菜斯基
  • EopstR_安德
  • xiaokai315
  • ymz
  • zhang2225656
  • hn376fsh
  • 皮秋咏
  • yanxi7584
  • Edithfus
  • 如果119
后退
顶部 底部