下面代码为最简单的Bellman-Ford算法的表示,可以用队列进行优化。
#include <stdio.h>
#define MAXN 1000
int u[MAXN + 1];
int v[MAXN + 1];
int w[MAXN + 1];
int d[MAXN + 1];
int n,m;
int main(){
while(scanf("%d%d",&n,&m) != EOF){
for(int i = 1; i <= m; i++){
scanf("%d%d%d", u + i, v + i, w + i);
}
const int inf = 1 << 30;
for(int i = 1; i <= n ; i++){
d[i] = inf;
}
d[1] = 0;
for(int i = 1; i < n; i++){
for(int e = 1; e <= m; e++){
if(d[v[e]] > d[u[e]] + w[e]){
d[v[e]] = d[u[e]] + w[e];
}
}
}
for(int i = 1; i <= n; i++){
printf("%d ",d[i]);
}
}
return 0;
}
By ACReaper