题目分析


来源:acwing

分析:
Kruskal算法思路:

  1. 将所有边按权重从小到大排序。算法瓶颈在此O(m×logm)O(m\times logm)O(m×logm)
  2. 枚举每条边:a和b是两个点,组成的边权重是c
    if a和b 不连通,将这条边加入到集合中。
    第2步:时间复杂度O(m)

其中第2步,就是并查集的简单应用。

ac代码

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;int n, m;
int p[N];struct Edge{int a, b, w;bool operator<(const Edge& W)const{return w < W.w;}
}edges[N];int find(int x){if( p[x] != x) p[x] = find(p[x]);return p[x];
}int main(){cin >> n >> m;for(int i = 0; i < m; i ++){int a, b, w;cin >> a >> b >> w;edges[i] = {a, b, w};}sort(edges, edges + m);int res = 0, cnt = 0;for(int i = 1; i<= n; i++)  p[i] = i;for(int i = 0; i < m; i++){int a = edges[i].a, b = edges[i].b, w = edges[i].w;a = find(a), b= find(b);if( a != b){p[a] =b;res += w;cnt ++; // 统计加了多少条边}}if(cnt < n - 1)  puts("impossible");else printf("%d\n", res);}

题目来源

https://www.acwing.com/problem/content/861/

最小生成树板子-AcWing 859. Kruskal算法求最小生成树相关推荐

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

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

  2. 最小生成树板子-AcWing 858. Prim算法求最小生成树

    题目分析 来源:acwing 分析: 给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|. 由 V 中的全部 n 个顶点和 E 中 n−1 ...

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

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

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

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

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

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

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

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

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

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

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

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

  9. AcWing 858. Prim算法求最小生成树(稠密图)

    题目链接 https://www.acwing.com/problem/content/description/860/ 思路 prim算法的思想就是,我们维护一个最优集合,然后寻找所有不在集合的点连 ...

最新文章

  1. python哪个版本好-python应该学习哪个版本
  2. ORACLE 11G 搭建dataguard详细步骤(所有操作总结)
  3. VC6.0下opencv1.0的环境配置
  4. C# WebBrower1控件提示“该文档已被修改,是否保存修改结果”解决方法 .
  5. 计算机辅助语言和语言学关系,西方语言学与多媒体计算机辅助语言学习_王艳萍...
  6. 拼小圈营销群_深圳弘辽科技电商:拼多多“砍单免费拿”:一场关于人性的较量...
  7. Linux之atime,ctime,mtime的区别
  8. 新浪新规:9点关灯,公司加班要交空调费:1600元/小时
  9. 【实习周记】ArrayMap源码分析
  10. JAVA退房计算价格怎么写,JAVA宾馆客房管理系统报告.doc
  11. HTML下拉菜单(超详细):
  12. python爬取文献资料_Python 批量爬取Web of Science 文献信息数据
  13. Matlab函数psf2otf()的python实现
  14. 什么是长连接和短连接,他们的定义区别及应用场景?
  15. scala val 与var 区别
  16. 使用FMDB进行数据库操作
  17. 基于JAVA图书馆座位预约管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  18. qrCode二维码的生成和识别
  19. 校园学校排课选课系统 毕业设计毕设源码毕业论文开题报告参考(4)网站和学生功能
  20. 在本地利用服务器显卡跑代码

热门文章

  1. 使用phpize安装php模块
  2. iOS学习之Runtime(二)
  3. MySQL 数据库 InnoDB 和 MyISAM 数据引擎的差别
  4. php 判断字符串是不存在json中
  5. hdu 3613 扩展kmp+回文串
  6. csapp:无符号数可能造成的程序bug
  7. HDU 4031 Attack (线段树)
  8. 如何卸载Windows 7中的IE10并还原到IE9
  9. CSS的优先级和继承性
  10. linux 软链接_面试 | Linux 下软链接和硬链接的区别