个人总结,欢迎拍砖~

松弛:设源点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;//没有负环回路
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wygdove/p/4814321.html

图论浅析--最短路之Bellman-Ford相关推荐

  1. bellman - ford算法c++

    (最短路III)bellman - ford算法(适用于含负权边的图) 注意:用该算法求最短路,在有边数限制的情况下可以存在负权回路!且对所走的边的数量有要求时只能用该算法实现! 解析:因为如果没有边 ...

  2. SPFA or bellman ford松弛法--单源最短路

    问题概述:有编号1-n的n个站点,有m条公交车路线,公交车只从一个起点站直接到达终点站,是单向的且每条路线有它自己的车费,有P个人早上从1出发,他们要到达每一个公交站点,然后到了晚上再返回点1,求所有 ...

  3. 图解Bellman Ford算法

    Bellman Ford 单源最短路径算法[中字] Bellman Ford 单源最短路径算法[中字]_哔哩哔哩_bilibili 贝尔曼-福特算法(Bellman–Ford algorithm )油 ...

  4. bellman ford 算法 判断是否存在负环

    Flyer 目录视图 摘要视图 订阅 微信小程序实战项目--点餐系统        程序员11月书讯,评论得书啦        Get IT技能知识库,50个领域一键直达 关闭 bellman for ...

  5. Bellman Ford算法详解

    一.用途 1. Bellman Ford算法是解决拥有负权边最短路问题的方法之一.还有一种方法是SPFA算法. 2. 二者相比,SPFA算法在效率方面是优于Bellman Ford算法的.但在某些情况 ...

  6. LeetCode 787. K 站中转内最便宜的航班(图/Bellman Ford算法)

    文章目录 贝尔曼-福特算法(Bellman-Ford) 简介 算法思想 算法执行过程 应用 题目描述 分析 代码 LeetCode 787. K 站中转内最便宜的航班 题目描述 Bellman For ...

  7. Bellman ford算法(贝尔曼·福特算法)

    Bellman - ford算法是求含负权图的单源最短路径的一种算法,效率较低,代码难度较小.其原理为连续进行松弛,在每次松弛时把每条边都更新一下,若在n-1次松弛后还能更新,则说明图中有负环,因此无 ...

  8. C++实现bellman ford贝尔曼-福特算法(最短路径)(附完整源码)

    C++实现bellman ford贝尔曼-福特算法 实现bellman ford贝尔曼-福特算法的完整源码(定义,实现,main函数测试) 实现bellman ford贝尔曼-福特算法的完整源码(定义 ...

  9. Bellman——Ford算法

    Bellman--Ford 算法介绍 思路讲解 案例分析与代码实现 案例分析 代码实现 优先队列优化(SPFA) 优化原理 代码实现 算法介绍 我们知道Dijkstra算法只能用来解决正权图的单源最短 ...

最新文章

  1. String.fromCharCode()
  2. 8SimpleAdapter:一行显示的数据有图标
  3. 性味归经与功能的脚本(超过四元素)
  4. 计算机辅助教学导学设计研究,《计算机辅助教学》实验报告
  5. 说说几个 Python 内存分配时的小秘密
  6. oracle 创建日志文件,oracle创建日志文件
  7. C语言中.h文件和.c文件如何理解?看完详细解析,小白也能懂!
  8. 删除某个路径下的文件夹
  9. (转载) Android两个子线程之间通信
  10. 首发Android 13!谷歌Pixel 7 Pro渲染图曝光:后置相机模组吸睛
  11. excel文本方式区学习笔记
  12. 基于Matlab----16QAM调制与解调
  13. Eclipse Package Explorer视图无法打开
  14. 问题解决:Unlink of the file ‘.git/objects/pack/….idx’ failed. Should I try again?
  15. WPS国外版更改语言设置mac
  16. 显著性水平 P值 概念解释
  17. Android App 冷启动优化方案--黑白屏
  18. 利用 python 实现多张图片的无损拼接
  19. 人民币为什么 不继续升值
  20. linux提取手机rom,提取安卓手机ROM固件中的APP

热门文章

  1. 数据降维(特征提取)和特征选择有什么区别?
  2. Objective-C语法简化
  3. java.lang.IllegalAccessError: org.apache.commons.dbcp.DelegatingPreparedStatement.isClosed()Z
  4. wios设置证书登陆
  5. node实战学习纪录
  6. ZOJ 38727(贪心)
  7. ListItem.Update与ListItem.SystemUpdate
  8. 最新的C#SqlHelper 类苏飞修改版(转载)
  9. rpm安装文件制作和使用
  10. 如何使用Hadoop的JobControl