Bellman-Ford算法求最短路和负环

简介: Bellman-Ford算法求最短路和负环

Bellman-Ford算法(O(nm)

Bellman-Ford(贝尔曼-福特)算法基于松弛操作的单源最短路算法。

e[u]存u点的出边的邻点和边权,d[u]存u点到源点的距离。

  1. 初始化,ds]=0,d[其它点]=+o;
  2. 执行多轮循环。每轮循环,对所有边都尝试进行一次松弛操作;
  3. 当一轮循环中没有成功的松弛操作时,算法停止

为什么最坏需要n-1轮循环:n-1轮循环可以保证在有n个顶点的图中,从源节点到任意其他节点的最短路径都可以被找到。因为最长的简单路径最多包含n-1条边,所以进行n-1轮的松弛操作足以找到所有最短路径。

【模板】负环

题目描述

给定一个 n 个点的有向图,请求出图中是否存在从顶点 1 出发能到达的负环。

负环的定义是:一条边权之和为负数的回路。

输入格式

本题单测试点有多组测试数据

输入的第一行是一个整数 T,表示测试数据的组数。对于每组数据的格式如下:

第一行有两个整数,分别表示图的点数 n 和接下来给出边信息的条数 m

接下来 m 行,每行三个整数 u,v,w

  • w0,则表示存在一条从 uv 边权为 w 的边,还存在一条从 vu 边权为 w 的边。
  • w<0,则只表示存在一条从 uv 边权为 w 的边。

输出格式

对于每组数据,输出一行一个字符串,若所求负环存在,则输出 YES,否则输出 NO

样例 #1

样例输入 #1

2
3 4
1 2 2
1 3 4
2 3 1
3 1 -3
3 3
1 2 3
2 3 4
3 1 -8
AI 代码解读

样例输出 #1

NO
YES
AI 代码解读

提示

数据规模与约定

对于全部的测试点,保证:

  • 1n2×1031m3×103
  • 1u,vn104w104
  • 1T10

提示

请注意,m 不是图的边数。

思路

利用Bellman-ford算法求负环即可,模版题

代码

目录
打赏
0
0
0
0
0
分享
相关文章
|
11月前
|
最短路之Floyd算法
最短路之Floyd算法
106 1
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-5 算法训练 最短路
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-5 算法训练 最短路
58 0
|
11月前
|
最短路之Dijkstra算法
最短路之Dijkstra算法
76 0
|
11月前
|
class065 A星、Floyd、Bellman-Ford与SPFA【算法】
class065 A星、Floyd、Bellman-Ford与SPFA【算法】
95 0
|
11月前
|
讲课:拓扑排序、最短路算法
讲课:拓扑排序、最短路算法
|
11月前
|
最短路之SPFA算法
最短路之SPFA算法
74 0
class064 Dijkstra算法、分层图最短路【算法】
class064 Dijkstra算法、分层图最短路【算法】
96 0
图论算法(最短路、网络流、二分图)
图论算法(最短路、网络流、二分图)
125 0
基于免疫算法的最优物流仓储点选址方案MATLAB仿真
本程序基于免疫算法实现物流仓储点选址优化,并通过MATLAB 2022A仿真展示结果。核心代码包括收敛曲线绘制、最优派送路线规划及可视化。算法模拟生物免疫系统,通过多样性生成、亲和力评价、选择、克隆、变异和抑制机制,高效搜索最优解。解决了物流仓储点选址这一复杂多目标优化问题,显著提升物流效率与服务质量。附完整无水印运行结果图示。
基于免疫算法的最优物流仓储点选址方案MATLAB仿真
基于GA遗传算法的斜拉桥静载试验车辆最优布载matlab仿真
本程序基于遗传算法(GA)实现斜拉桥静载试验车辆最优布载的MATLAB仿真,旨在自动化确定车辆位置以满足加载效率ηq(0.95≤ηq≤1.05)的要求,目标是使ηq尽量接近1,同时减少加载车辆数量和布载耗时。程序通过迭代优化计算车辆位置、方向、类型及占用车道等参数,并展示适应度值收敛过程。测试版本为MATLAB2022A,包含核心代码与运行结果展示。优化模型综合考虑车辆总重量、间距及桥梁允许载荷密度等约束条件,确保布载方案科学合理。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等