File tree Expand file tree Collapse file tree 1 file changed +6
-6
lines changed Expand file tree Collapse file tree 1 file changed +6
-6
lines changed Original file line number Diff line number Diff line change 54
54
55
55
## 思路
56
56
57
- 本题是 [ kama94.城市间货物运输I] ( ./kama94 .城市间货物运输I.md ) 延伸题目。
57
+ 本题是 [ kama94.城市间货物运输I] ( ./0094 .城市间货物运输I.md ) 延伸题目。
58
58
59
59
本题是要我们判断 负权回路,也就是图中出现环且环上的边总权值为负数。
60
60
@@ -64,15 +64,15 @@ circle
64
64
65
65
接下来我们来看 如何使用 bellman_ford 算法来判断 负权回路。
66
66
67
- 在 [ kama94.城市间货物运输I] ( ./kama94 .城市间货物运输I.md ) 中 我们讲了 bellman_ford 算法的核心就是一句话:对 所有边 进行 n-1 次松弛。 同时文中的 【拓展】部分, 我们也讲了 松弛n次以上 会怎么样?
67
+ 在 [ kama94.城市间货物运输I] ( ./0094 .城市间货物运输I.md ) 中 我们讲了 bellman_ford 算法的核心就是一句话:对 所有边 进行 n-1 次松弛。 同时文中的 【拓展】部分, 我们也讲了 松弛n次以上 会怎么样?
68
68
69
69
在没有负权回路的图中,松弛 n 次以上 ,结果不会有变化。
70
70
71
71
但本题有 负权回路,如果松弛 n 次,结果就会有变化了,因为 有负权回路 就是可以无限最短路径(一直绕圈,就可以一直得到无限小的最短距离)。
72
72
73
73
那么每松弛一次,都会更新最短路径,所以结果会一直有变化。
74
74
75
- (如果对于 bellman_ford 不了解的录友,建议详细看这里:[ kama94.城市间货物运输I] ( ./kama94 .城市间货物运输I.md ) )
75
+ (如果对于 bellman_ford 不了解的录友,建议详细看这里:[ kama94.城市间货物运输I] ( ./0094 .城市间货物运输I.md ) )
76
76
77
77
以上为理论分析,接下来我们再画图举例。
78
78
@@ -94,13 +94,13 @@ circle
94
94
95
95
如果在负权回路多绕两圈,三圈,无穷圈,那么我们的总成本就会无限小, 如果要求最小成本的话,你会发现本题就无解了。
96
96
97
- 在 bellman_ford 算法中,松弛 n-1 次所有的边 就可以求得 起点到任何节点的最短路径,松弛 n 次以上,minDist数组(记录起到到其他节点的最短距离)中的结果也不会有改变 (如果对 bellman_ford 算法 不了解,也不知道 minDist 是什么,建议详看上篇讲解[ kama94.城市间货物运输I] ( ./kama94 .城市间货物运输I.md ) )
97
+ 在 bellman_ford 算法中,松弛 n-1 次所有的边 就可以求得 起点到任何节点的最短路径,松弛 n 次以上,minDist数组(记录起到到其他节点的最短距离)中的结果也不会有改变 (如果对 bellman_ford 算法 不了解,也不知道 minDist 是什么,建议详看上篇讲解[ kama94.城市间货物运输I] ( ./0094 .城市间货物运输I.md ) )
98
98
99
99
而本题有负权回路的情况下,一直都会有更短的最短路,所以 松弛 第n次,minDist数组 也会发生改变。
100
100
101
- 那么解决本题的 核心思路,就是在 [ kama94.城市间货物运输I] ( ./kama94 .城市间货物运输I.md ) 的基础上,再多松弛一次,看minDist数组 是否发生变化。
101
+ 那么解决本题的 核心思路,就是在 [ kama94.城市间货物运输I] ( ./0094 .城市间货物运输I.md ) 的基础上,再多松弛一次,看minDist数组 是否发生变化。
102
102
103
- 代码和 [ kama94.城市间货物运输I] ( ./kama94 .城市间货物运输I.md ) 基本是一样的,如下:(关键地方已注释)
103
+ 代码和 [ kama94.城市间货物运输I] ( ./0094 .城市间货物运输I.md ) 基本是一样的,如下:(关键地方已注释)
104
104
105
105
``` CPP
106
106
#include < iostream>
You can’t perform that action at this time.
0 commit comments