图论浅析--最短路之Bellman-Ford
来源:互联网 发布:qq游戏hd登录网络异常 编辑:程序博客网 时间:2024/05/29 16:30
个人总结,欢迎拍砖~
松弛:设源点s到点x、y的最短路径长度为dis[x]、dis[y],x与y之间的距离是len[x][y]。下面的过程为松弛。
if(dis[x]+len[x][y]<dis[y]) dis[y]=dis[x]+len[x][y];
Bellman-Ford
求单源最短路,可处理负权,但不能有负环。
Bellman-Ford算法即对图进行持续地松弛,每次松弛把每条边都更新一下,若V-1次松弛后还能更新,则说明图中有负环,无法得出结果,否则就成功完成。
时间复杂度:O(VE)。
使用队列优化即SPFA。
Code
struct Edge{ int u,v; int cost;};vector<Edge>E;int n;int dist[NUM];bool bellman_ford(int start)//点的编号从1开始{ for(int i=1;i<=n;i++) dist[i]=INF; dist[start]=0; for(int i=1;i<n;i++) { bool flag=false; for(int j=0;j<E.size();j++) { int u=E[j].u; int v=E[j].v; int cost=E[j].cost; if(dist[v]>dist[u]+cost) { dist[v]=dist[u]+cost; flag=true; } } if(!flag) return true;//没有负环回路 } for(int j=0; j<E.size();j++) if(dist[E[j].v]>dist[E[j].u]+E[j].cost) return false;//有负环回路 return true;//没有负环回路}
0 0
- 图论浅析--最短路之Bellman-Ford
- 最短路之bellman-ford
- 最短路 bellman-ford
- 最短路~bellman-ford
- 最短路-Bellman-Ford
- 最短路之Bellman-Ford算法
- 最短路之bellman-ford HDU 1874
- 最短路之Bellman-Ford算法
- bellman ford最短路算法
- 最短路--Bellman-Ford算法
- bellman-ford算法 最短路
- Bellman-Ford(最短路)
- Bellman-ford最短路算法
- POJ 1860(最短路之Bellman-Ford)
- 图论最短路之bellman-ford
- 图论之Bellman-Ford
- 图论之bellman-ford
- poj 2240 Arbitrage(最短路+Bellman-Ford)
- The Land of Justice
- @interface java注解
- Hduoj1040【水题】
- Controlling How NSThread and NSRunLoop Exit
- HTTP 错误 500.19 - Internal Server Error
- 图论浅析--最短路之Bellman-Ford
- Java:注解(Annotation)自定义注解入门
- HDU3415
- Objective-C_实例变量可⻅度及方法
- Codeforces 547 D. Mike and Fish
- Android之——Service总结
- Spring MVC JSON数据交互-解析和返回JSON
- iOS 多线程技术1
- 第一次使用linux并编写了一个dump mysql的程序,记录下简单的步骤