当前位置: 首页 > news >正文

算法题(246):负环(bellman_ford算法)

审题:

本题需要我们判断图中是否存在负环

思路:

方法一:bellman_ford算法

在bellman_ford算法中,我们已经知道正常情况下最多只会进行n-1轮松弛操作,如果存在负环会就一直进行松弛操作,所以我们可以把松弛操作轮数限定为n轮,如果第n轮中仍然进行了松弛操作,那么就说明有负环,否则就没有

解题:
 

#include<iostream>
using namespace std;
const int N = 2e3 + 10, M = 3e3 + 10;
int t, n, m;
int pos;
int dist[N];
struct node
{int l, r, v;
}e[2*M];
bool bf()
{//初始化dist数组for (int i = 1; i <= n; i++){dist[i] = 0x3f3f3f3f;}dist[1] = 0;bool flags = false;for (int i = 1; i <= n; i++){flags = false;for (int j = 1; j <= pos; j++){int l = e[j].l, r = e[j].r, v = e[j].v;if (dist[l] == 0x3f3f3f3f) continue;//if (dist[r] > dist[l] + v){dist[r] = dist[l] + v;flags = true;}}if (flags == false) return false;//没有进行松弛操作,没有负环直接返回}return true;
}
int main()
{cin >> t;while (t--){pos = 0;cin >> n >> m;for (int i = 1; i <= m; i++){int x, y, z; cin >> x >> y >> z;pos++;e[pos].l = x; e[pos].r = y; e[pos].v = z;if (z >= 0)//双向边{pos++;e[pos].l = y; e[pos].r = x; e[pos].v = z;}}if (bf()) cout << "YES" << endl;else cout << "NO" << endl;}return 0;
}

关键1:当权值大于等于0的时候是双向边关系,需要记录好

关键2:负环判断具体实现

进行n轮松弛操作,如果提前检测到flags为false,说明没有负环

如果进行了n轮都没有检测到flags为false,说明第n轮仍然有松弛操作,一定有负环存在

关键3:松弛操作之前要进行节点可达性检查

如果不检查将要进行松弛操作的节点是否dist为无穷大,可能会出现多轮无效松弛

比如:

1

4 3

2 3 -1

3 4 -1

4 2 -1

图关系如下:

这里虽然有负环,但是无法从起点1到达,所以正确答案应该是NO,可是不进行节点可达性检测,就会让右侧三个节点不断进行松弛操作,从而让返回值变为trueP3385 【模板】负环 - 洛谷

http://www.dtcms.com/a/538516.html

相关文章:

  • 宿州网站建设Wordpress控制上传文件大小
  • 做网站哪个效果好酒店网站模板
  • Pandas 缺失值最佳实践:用 pd.NA 解决缺失值的老大难问题
  • 公司网站备案需要每年做吗网站和管理系统的区别
  • 淘宝联盟 网站建设 内容少手机免费建网站
  • 天津 网站建设wordpress柚子皮5.31
  • 网站建设服务内容济南网站建设伍际网络
  • 网站建设的总体设计思想58同城网络营销
  • 什么企业网站能自己做二级域名做网站有哪些缺点
  • 辽宁官方网站做辣白菜WordPress换域名更新
  • 龙岩网站建设加盟专业做甜点的网站
  • 网站里的内容都是什么作用互联网行业怎么样
  • 高端产品网站wordpress提货下载
  • 一般做兼职在哪个网站做网站人员工资
  • 学校建设微网站的方案公司简介100字范文
  • 重庆网站建设报价erp沙盘模拟实训报告
  • 建网站的目的是什么建设网站模板免费
  • 做情人在那个网站记事本代码做网站
  • php能区别电脑网站和手机网站吗怎么嵌入到phpcmswordpress数据库表管理系统
  • 找做网站的朋友软件开发流程详细
  • 湛江师范学院网站开发技术wordpress大学攻击
  • 资源网站推荐黄山旅游攻略自驾游
  • 双鸭山网站开发在凡客建站中建设网站方法
  • 网站的设计与制作阅读第2版网站的建设有什么好处
  • 上海高端网站建设制作做网站 接单
  • 网站在线制作无锡网知名网站
  • 技术面:SpringBoot(启动流程、如何优雅停机)
  • 网站建设软硬件平台有哪些郑州铭功路网站建设
  • 青岛网站建设方案优化网络实施方案怎么写
  • 网站在线留言设计师培训经历怎么写