Kruskal算法求最小生成树
思路
在原图中选择最小的边权,加其加入到生成树中,若此边在生成树中成环舍去。
代码实现
struct node { int a, b, w;bool operator<(node t){return w < t.w;}
} e[N];// 存边和权值int find(int x) // 并查集路径压缩查找
{if (p[x] != x) p[x] = find(p[x]);return p[x];
}int kruskal()
{sort(e, e + m); // 将各边的权值按从小到大排序for (int i = 1; i <= n; i++) p[i] = i;int cnt = 0, res = 0;for (int i = 0; i < m; i++){int a = e[i].a, b = e[i].b, w = e[i].w;a = find(a), b = find(b);if (a != b) // 防止成环 (在一个集合中才能成环){p[a] = b; // 形成生成树cnt++; // 统计生成树边数res += w; // 统计生成树的权值}}if (cnt == n - 1) return res;else return false;
}
Kruskal算法求最小生成树相关推荐
- CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树
题目分析 来源:acwing 分析:这是一道最小生成树的裸题. 这里默写Kruskal求最小生成树的最小费用的模板. 最小生成树模板请参考笔者的另一篇博文: 最小生成树板子-AcWing 859. K ...
- C语言实现克鲁斯卡尔Kruskal算法求最小生成树(附完整源码)
Kruskal算法求最小生成树 Edge结构体,Graph结构体 Kruskal算法求最小生成树完整源码(定义,实现,main函数测试) Edge结构体,Graph结构体 // a structure ...
- Prim算法和Kruskal算法求最小生成树
Prim算法 连通分量是指图的一个子图,子图中任意两个顶点之间都是可达的.最小生成树是连通图的一个连通分量,且所有边的权值和最小. 最小生成树中,一个顶点最多与两个顶点邻接:若连通图有n个顶点,则最小 ...
- 用kruskal算法求最小生成树各边的权值之和
[问题描述] 已知含有n个顶点的带权连通无向图,采用邻接矩阵存储,邻接矩阵以三元组的形式给出, 只给出不包括主对角线元素在内的下三角形部分的元素,且不包括不相邻的顶点对.求该连通图的最小生成树中各边的 ...
- prim算法求最小生成树_克鲁斯卡尔算法(Kruskal算法)求最小生成树
上一节介绍了求最小生成树之普里姆算法.该算法从顶点的角度为出发点,时间复杂度为O(n2),更适合与解决边的绸密度更高的连通网.本节所介绍的克鲁斯卡尔算法,从边的角度求网的最小生成树,时间复杂度为O(e ...
- 图论 —— Kruskal 算法求最小生成树
概述 Kruskal 算法是一种常见并且好写的最小生成树算法,由 Kruskal 发明.该算法的基本思想是从小到大加入边.算法实现基于贪心算法. 对于一个拥有 n n n 个顶点 m m m 条边的图 ...
- 最小生成树板子-AcWing 859. Kruskal算法求最小生成树
题目分析 来源:acwing 分析: Kruskal算法思路: 将所有边按权重从小到大排序.算法瓶颈在此O(m×logm)O(m\times logm)O(m×logm) 枚举每条边:a和b是两个点, ...
- AcWing 859. Kruskal算法求最小生成树(稀疏图)
题面连接 https://www.acwing.com/problem/content/861/ 思路 没啥好说的,就是贪心+破圈法,然后不断将最短的边加入集合中,可以参考我这篇博客 https:// ...
- 对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的边。说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度
对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的 边.说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度
最新文章
- Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条
- 【转载】c#类的成员初始化顺序
- pip: failed to create process.解决方法
- 禅道开源版用户手册_自动化建模 | H2O开源工具介绍
- Android工具大杂烩
- 异常作业2(2018.08.22)
- python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)
- 在ubuntu下面安装glew
- 018年,这种员工,开再高的工资都要留住
- .NET的可调信号量
- R语言中识别和去除重复行
- 远程桌面连接无法全屏显示
- 看不懂JDK8的流操作?5分钟带你入门(转)
- MySQL8.0.19解压安装教程
- 设计模式 - 抽象工厂模式案例
- element-ui下载文件功能
- CSS让同一行的图片和文字垂直居中对齐
- MPLS基本部署实验解析(静态LSP与动态LSP)
- 高通平台USB 2.0和USB 3.0接口充电器识别原理
- H5实现九宫格效果抽奖