import (
"testing"
"strconv"
"fmt"
)
// V - S = T
type Dijkstra struct {
Visit bool // 表示是否访问
Val int // 表示距离
Path string // 路径的显示
}
const (
INT_MAX = 1<<32 - 1
)
func getShortPathByDijkstra(begin int, vertex [][]int) []Dijkstra {
if 0 == len(vertex) || 0 == len(vertex[0]) || len(vertex) != len(vertex[0]) {
return []Dijkstra{}
}
d := make([]Dijkstra, len(vertex))
for i := 0; i < len(vertex); i++ {
d[i].Visit = false
d[i].Val = vertex[begin-1][i]
d[i].Path = "V" + strconv.Itoa(begin) + " -> V" + strconv.Itoa(i+1)
}
d[begin-1].Visit = true
d[begin-1].Val = 0
count := 1
for count < len(vertex) { // 从源点到目的点依次加入最短路径节点进去
min := INT_MAX
temp := 0
for i := 0; i < len(vertex); i++ { // 找源点到集合T中最短路径的点加入到S中
if !d[i].Visit && d[i].Val < min {
min = d[i
求图中两点最短路径(dijkstra) go实现
最新推荐文章于 2023-03-26 23:51:28 发布