package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
"sync"
)
type Edge struct {
u int
v int
w int
}
var cnt int
var fa [200005] int
type shuzu []Edge
func (a shuzu) Len() int {
return len(a)
}
func (a shuzu) Less(i, j int) bool {
return a[i].w < a[j].w
}
func (a shuzu) Swap(i, j int) {
a[i], a[j] = a[j], a[i]
}
func main() {
n := ReadInt()
m := ReadInt()
edge := make([]Edge, m+1)
for i := 1; i <= m; i++ {
edge[i].u = ReadInt()
edge[i].v = ReadInt()
edge[i].w = ReadInt()
}
for i := 1; i <= n+1; i++ {
fa[i] = i;
}
sort.Sort(shuzu(edge))
var tot int = 0
var ans int64 = 0
for i := 1; i <= m; i++ {
u := find(edge[i].u)
v := find(edge[i].v)
if u != v {
ans += int64(edge[i].w)
fa[u] = v
tot++
}
if tot == n-1 {
break;
}
}
if tot==n-1 {
fmt.Println(ans)
} else {
fmt.Println(-1)
}
}
////////////////////////////////////
func find(x int) int {
p := x
var tmp int = 0
for p
golang实现kruskal最小生成树
最新推荐文章于 2024-10-28 19:57:08 发布

最低0.47元/天 解锁文章
127

被折叠的 条评论
为什么被折叠?



