File tree Expand file tree Collapse file tree 1 file changed +14
-19
lines changed Expand file tree Collapse file tree 1 file changed +14
-19
lines changed Original file line number Diff line number Diff line change @@ -34,41 +34,36 @@ type Edge struct {
3434func Dijkstra (gg * Graph , start int ) {
3535
3636 var dist [MAX_SIZE ]int //路劲长度数组
37- var flag [MAX_SIZE ]bool
38- var prev [MAX_SIZE ]int
37+ var ss [MAX_SIZE ]bool //最短路劲节点集合
3938
4039 //init
4140 dist = gg .matrix [start ]
42- flag [start ] = true //find start to start
43- dist [start ] = 0 //start to start length
44- fmt .Println ("dist : " , dist )
41+ ss [start ] = true //find start to start
42+ dist [start ] = 0 //start to start length
4543
46- //广度搜索
4744 for i := 0 ; i < gg .vexnum ; i ++ {
4845 k := 0
4946 min := MAX_VALUE
50- //find min
47+ fmt .Println ("-----------" )
48+ fmt .Println (dist , ss )
49+ //find next 贪心
5150 for j := 0 ; j < len (dist ); j ++ {
52- if flag [j ] == false && dist [j ] != MAX_VALUE && dist [j ] < min {
51+ if ss [j ] == false && dist [j ] != MAX_VALUE && dist [j ] < min {
5352 min = dist [j ]
5453 k = j
5554 }
5655 }
5756
5857 //set find
59- flag [k ] = true
58+ ss [k ] = true
6059
6160 //update dist length
62- for u := 0 ; u < len (dist ); u ++ {
63- weigth := 0
64- if gg.matrix [k ][u ] == MAX_VALUE {
65- weigth = MAX_VALUE
66- } else {
67- weigth = min + gg.matrix [k ][u ]
68- }
69- if flag [u ] == false && weigth < dist [u ] {
70- dist [u ] = weigth
71- prev [u ] = k
61+ for u := 0 ; u < gg .vexnum ; u ++ {
62+ if gg.matrix [k ][u ] != MAX_VALUE && ss [u ] == false {
63+ weight := min + gg.matrix [k ][u ]
64+ if weight < dist [u ] {
65+ dist [u ] = weight
66+ }
7267 }
7368 }
7469
You can’t perform that action at this time.
0 commit comments