首页 > 其他 > 详细

Bellman-Ford最短路径

时间:2016-09-17 13:16:09      阅读:173      评论:0      收藏:0      [点我收藏+]

对于前面说到的最短路径的求解方法,不能解决负权边的情况,而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最短路径

原文:http://www.cnblogs.com/shangjindexiaoqingnian/p/5878227.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!