Skip to content

Commit 7f5c98e

Browse files
committed
finish
1 parent b82b5e5 commit 7f5c98e

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

Dijkstra.go

+14-19
Original file line numberDiff line numberDiff line change
@@ -34,41 +34,36 @@ type Edge struct {
3434
func 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

0 commit comments

Comments
 (0)