码迷,mamicode.com
首页 > 其他好文 > 详细

Bellman-Ford最短路径

时间:2016-09-17 13:17:27      阅读:121      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!