Bellman-Ford最短路径

Posted 上进小青年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bellman-Ford最短路径相关的知识,希望对你有一定的参考价值。

对于前面说到的最短路径的求解方法,不能解决负权边的情况,而Bellman-Ford却可以

共有n个顶点,m条边,每次输入u[i],v[i],w[i],代表从u[i]到v[i]的距离是w[i],对于所有的顶点进行n-1次松弛

还是直接看代码吧

技术分享
 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<string.h>
 5 using namespace std;
 6 const int inf=0x3f3f3f3f;
 7 int main()
 8 {
 9     int m,n,u[100],v[100],w[100],dis[100];
10     while(cin>>n>>m){
11         for(int i=1;i<=n;i++){
12             dis[i]=inf;
13         }
14         for(int i=1;i<=m;i++){
15             cin>>u[i]>>v[i]>>w[i];
16         }
17         dis[1]=0;
18         for(int k=1;k<=n-1;k++){
19             for(int i=1;i<=m;i++){
20                 if(dis[v[i]]>dis[u[i]]+w[i])
21                     dis[v[i]]=dis[u[i]]+w[i];
22             }
23         }
24         for(int i=1;i<=n;i++)
25             cout<<dis[i]<<" ";
26     }
27 }
28 
29 
30 /*
31 5 5
32 2 3 2
33 1 2 -3
34 1 5 5
35 4 5 2
36 3 4 3
37 输出:0 -3 -1 2 4
38 */
View Code

 

以上是关于Bellman-Ford最短路径的主要内容,如果未能解决你的问题,请参考以下文章

Bellman-Ford最短路径

四大算法解决最短路径问题(Dijkstra+Bellman-ford+SPFA+Floyd)

求最短路径(Bellman-Ford算法与Dijkstra算法)

算法笔记:图论中的单源最短路径算法——Bellman-Ford 算法

算法笔记-----单源最短路径之Bellman-Ford算法

dijkstra算法学习