思路

在原图中选择最小的边权,加其加入到生成树中,若此边在生成树中成环舍去。

代码实现

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算法求最小生成树相关推荐

  1. CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树

    题目分析 来源:acwing 分析:这是一道最小生成树的裸题. 这里默写Kruskal求最小生成树的最小费用的模板. 最小生成树模板请参考笔者的另一篇博文: 最小生成树板子-AcWing 859. K ...

  2. C语言实现克鲁斯卡尔Kruskal算法求最小生成树(附完整源码)

    Kruskal算法求最小生成树 Edge结构体,Graph结构体 Kruskal算法求最小生成树完整源码(定义,实现,main函数测试) Edge结构体,Graph结构体 // a structure ...

  3. Prim算法和Kruskal算法求最小生成树

    Prim算法 连通分量是指图的一个子图,子图中任意两个顶点之间都是可达的.最小生成树是连通图的一个连通分量,且所有边的权值和最小. 最小生成树中,一个顶点最多与两个顶点邻接:若连通图有n个顶点,则最小 ...

  4. 用kruskal算法求最小生成树各边的权值之和

    [问题描述] 已知含有n个顶点的带权连通无向图,采用邻接矩阵存储,邻接矩阵以三元组的形式给出, 只给出不包括主对角线元素在内的下三角形部分的元素,且不包括不相邻的顶点对.求该连通图的最小生成树中各边的 ...

  5. prim算法求最小生成树_克鲁斯卡尔算法(Kruskal算法)求最小生成树

    上一节介绍了求最小生成树之普里姆算法.该算法从顶点的角度为出发点,时间复杂度为O(n2),更适合与解决边的绸密度更高的连通网.本节所介绍的克鲁斯卡尔算法,从边的角度求网的最小生成树,时间复杂度为O(e ...

  6. 图论 —— Kruskal 算法求最小生成树

    概述 Kruskal 算法是一种常见并且好写的最小生成树算法,由 Kruskal 发明.该算法的基本思想是从小到大加入边.算法实现基于贪心算法. 对于一个拥有 n n n 个顶点 m m m 条边的图 ...

  7. 最小生成树板子-AcWing 859. Kruskal算法求最小生成树

    题目分析 来源:acwing 分析: Kruskal算法思路: 将所有边按权重从小到大排序.算法瓶颈在此O(m×logm)O(m\times logm)O(m×logm) 枚举每条边:a和b是两个点, ...

  8. AcWing 859. Kruskal算法求最小生成树(稀疏图)

    题面连接 https://www.acwing.com/problem/content/861/ 思路 没啥好说的,就是贪心+破圈法,然后不断将最短的边加入集合中,可以参考我这篇博客 https:// ...

  9. 对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的边。说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度

    对下图所示的连通网络G,用克鲁斯卡尔(Kruskal)算法求G的最小生成树T,请写出在算法执行过程中,依次加入T的边集TE中的 边.说明该算法的基本思想及贪心策略,并简要分析算法的时间复杂度

最新文章

  1. Seaborn使用set_context函数调整绘图标签和线条的大小、设置不同的模式、例如notebook模式、PPT模式、海报模式等、set_context函数可以指定绘图上下文并自动调整标签和线条
  2. 【转载】c#类的成员初始化顺序
  3. pip: failed to create process.解决方法
  4. 禅道开源版用户手册_自动化建模 | H2O开源工具介绍
  5. Android工具大杂烩
  6. 异常作业2(2018.08.22)
  7. python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)
  8. 在ubuntu下面安装glew
  9. 018年,这种员工,开再高的工资都要留住
  10. .NET的可调信号量
  11. R语言中识别和去除重复行
  12. 远程桌面连接无法全屏显示
  13. 看不懂JDK8的流操作?5分钟带你入门(转)
  14. MySQL8.0.19解压安装教程
  15. 设计模式 - 抽象工厂模式案例
  16. element-ui下载文件功能
  17. CSS让同一行的图片和文字垂直居中对齐
  18. MPLS基本部署实验解析(静态LSP与动态LSP)
  19. 高通平台USB 2.0和USB 3.0接口充电器识别原理
  20. H5实现九宫格效果抽奖

热门文章

  1. Burg法求解AR(p)模型参数(三)Levinson递推公式
  2. 向彪fisco bcos入门教程,为了直观安装区块链浏览器(九)
  3. python模块 - 常用模块推荐
  4. numpy矩阵升维,拼接
  5. 你必须牢记的Win7快捷键
  6. 如何用matlab编写分段函数_matlab 如何写分段函数
  7. TCP协议全面实验分析详解
  8. 两个超实用的 Kubernetes 集群中 Flannel 故障排除案例
  9. 10度角的三角函数计算(续)
  10. 初级X编程(非常好的入门学习资料)