go最小生成树
时间:2021-08-14
本文章向大家介绍go最小生成树,主要包括go最小生成树使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main import ( "fmt" "sort" ) var ( n, m int //n为点数 m为边数 edges []Edge pre []int ) // Edge 记录边 type Edge struct { from, to int val int } type byVal []Edge func (b byVal) Len() int { return len(b) } func (b byVal) Swap(i, j int) { b[i], b[j] = b[j], b[i] } func (b byVal) Less(i, j int) bool { return b[i].val < b[j].val } func find(x int) int { if pre[x] == x { return x } else { root := find(pre[x]) pre[x] = root return pre[x] } } func main() { fmt.Scanf("%d %d", &n, &m) pre = make([]int, n) for i := 0; i < n; i++ { pre[i] = i } edges = make([]Edge, m) for i := 0; i < m; i++ { var a, b, c int fmt.Scanf("%d %d %d", &a, &b, &c) a-- b-- edges[i].from = a edges[i].to = b edges[i].val = c } sort.Sort(byVal(edges)) //fmt.Println(edges) res := 0 for i := 0; i < m; i++ { from := edges[i].from to := edges[i].to anFrom := find(from) anTo := find(to) if anFrom != anTo { res += edges[i].val pre[anTo] = anFrom } } an0 := find(0) for i := 1; i < n; i++ { if find(i) != an0 { res = -1 break } } fmt.Println(res) } /* 4 3 1 2 1 1 3 10 2 3 3 5 6 1 2 3 2 1 5 1 3 2 4 2 6 4 5 1 5 3 2 */
原文地址:https://www.cnblogs.com/yuanweidao/p/15140619.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python的这些高级用法你都知道吗?
- ggstatsplot绘图|统计+可视化,学术科研神器
- 用python下载哔哩哔哩视频?
- 数据处理|数据查重怎么办?去重,就这么办!
- FFmpeg合并MP4文件
- Broom |tidy up a bit,模型,检验结果一键输出!
- 今日算法题-动态规划法
- 3分钟短文 | PHP获取函数的代码片段,唯有反射最高效!
- ggforce|绘制区域轮廓-区域放大-寻找你的“onepiece”
- 基因矩阵转置文件格式(* .gmt)
- gganimate|创建可视化动图,让你的表会说话
- ggplot2|玩转Manhattan图-你有被要求这么画吗?
- deconstructSigs|探寻cosmic的独特“气质”-mutation signature !
- barplot3d|圣诞节送你一个mutation signature搭建的“乐高”
- R读取gmt文件