Bellmanford 最短路(1)
来源:互联网 发布:ubuntu好用的输入法 编辑:程序博客网 时间:2024/06/04 23:35
Bellman-Ford算法
1.单源最短路
2.可处理包含负值的环路
3.效率O(V*E)
4.有向图无向图均适用
5.该文代码图采用邻接表形式储存
原理:
当我们寻找一条最短路时,假设源节点2可以到达的节点v,设p=<\v0,\v1,\v2,\v3,\v4>为最短路,则最短路径包含4-1=3条边,我们在操作中松弛了每条边。第i次松弛我们则找到<\V*i-1*,\Vi>条路。所以我们只要对E条边分别进行V-1次操作即可
#include<iostream>#define MAX_E 10001#define MAX_V 1001#define INF 0x3f3f3f3f using namespace std;struct edge{ int from; int to; int cost;};//int d[MAX_V];//distanceint V,E;//the number of Vertex,Edgeedge es[MAX_E];//Edges//int pre[MAX_V];//mark the pre vertex;bool Bellmanford(int s){ for(int i=0;i<=V;i++){d[i]=INF;} d[s]=0; for(int i=0;i<V-1;i++){ for(int j=0;j<E;j++){ if(d[es[j].to]>d[es[j].from]+es[j].cost){ d[es[j].to]=d[es[j].from]+es[j].cost; } } } bool flag=true; for(int i=0;i<V-1;i++){ for(int j=0;j<E;j++){ if(d[es[j].to]>d[es[j].from]+es[j].cost){ flag=false; } } } return flag;}int main(){ V=4; E=5; es[0].from=1; es[0].to=2; es[0].cost=1; es[1].from=1; es[1].to=3; es[1].cost=3; es[2].from=1; es[2].to=4; es[2].cost=5; es[3].from=2; es[3].to=4; es[3].cost=2; es[4].from=3; es[4].to=4; es[4].cost=4; if(Bellmanford(1)){ for(int i=1;i<=4;i++){ cout<<d[i]<<" "; } } else{ cout<<"There exits the loop"<<endl; }}
0 0
- Bellmanford 最短路(1)
- POJ2240 Arbitrage 最短路 bellmanford
- 最短路(Floyd、Dijstra,BellmanFord)
- POJ-1860-Currency Exchange [最短路][BellmanFord]
- POJ-3259-Wormholes [最短路][BellmanFord]
- UVa:10801 Lift Hopping (Bellmanford求最短路)
- poj 1556 zoj1721 BellmanFord 最短路+判断直线相交
- 单源最短路与bellmanford
- FloydWarshall 算法包含BellmanFord 和Dijkstra算法求单元最短路SSSP,可以有负权,有圈
- UVA658[It's not a Bug, it's a Feature!] BellmanFord || Dijkstra 求最短路
- 单源最短路(bellmanford&spfa)
- 温习最短路1
- 最短路 2016.9.1
- Bellmanford
- BellmanFord
- 最短路径之 BellmanFord算法
- 最短路径之 BellmanFord算法
- 最短路径:BellmanFord / SPFA / Dijkstra
- Java 信号量 Semaphore 介绍
- 合并排序
- Infinite Sequence
- Spring使用util Schema
- POJ 3126 Prime Path 筛法+最短路
- Bellmanford 最短路(1)
- iOS UIAppearance使用详解
- python 实现用ISBN从豆瓣获取图书信息
- Codeforces 14D Two Paths 【树的直径】
- 《Linux内核设计与实现》与《Linux内核源代码情景分析》读书笔记
- 支持向量机分类入门实用指南
- spring4整合quartz2定时器启动报:batch acquisition of 0 triggers
- onlien_judge_1368
- 斯坦福大学深度学习笔记:逻辑回归