File tree Expand file tree Collapse file tree 1 file changed +13
-2
lines changed Expand file tree Collapse file tree 1 file changed +13
-2
lines changed Original file line number Diff line number Diff line change @@ -42,16 +42,27 @@ func initEdge() {
4242}
4343
4444func Bellman () {
45+ //nodeNum -1 自身节点需要去除
4546 for i := 0 ; i < nodeNum - 1 ; i ++ {
47+ //查找已知权重节点 相连接节点 并且更新权重
4648 for j := 0 ; j < edgeNum ; j ++ {
47- //开始节点 权值 >
4849 if dist [edge [j ].v ] > dist [edge [j ].u ]+ edge [j ].weight {
4950 dist [edge [j ].v ] = dist [edge [j ].u ] + edge [j ].weight
5051 }
51- fmt . Println ( dist )
52+
5253 }
5354 }
55+ fmt .Println (dist )
5456
57+ //不存在负环路时,都有 v.d < = u.d + w ( u , v )
58+ for i := 0 ; i < edgeNum ; i ++ {
59+ if dist [edge [i ].v ] > dist [edge [i ].u ]+ edge [i ].weight {
60+ //存在负环路时,一定存在某条边使得 v.d >u.d + w ( u , v )
61+ fmt .Println ("Find 负环路" )
62+ return
63+ }
64+ }
65+ //另一种方案 从start出发。不断维护每个点的最短距离,如果有负权环,则会进行无数次的维护,越来越小,所以如果循环次数大于了V - 1则有负权环。
5566}
5667
5768func main () {
You can’t perform that action at this time.
0 commit comments