probelm

  • 给出n个点m条边的图,求最小生成树的边权和

solution

  • 将所有边按照边权从小到大顺序排序。
  • 如果一条边加入之后不存在环就加入。
  • 用并查集维护点的连通性。
  • 时间复杂度O(mlogm)
//code2 2021.03.07
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 2e5+10;
const int mod = 1000;struct Edge{int u, v, w;Edge(int u=0, int v=0, int w=0):u(u),v(v),w(w){}bool operator < (Edge b)const{return w<b.w;}
};int fa[maxn];
void init(int n){for(int i=1;i<=n;i++)fa[i]=i;}
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
void merge(int x,int y){x=find(x);y=find(y);if(x!=y)fa[x]=y;}int main(){int n, m;  cin>>n>>m;vector<Edge>e;for(int i = 0; i < m; i++){int u, v, w;  cin>>u>>v>>w;e.push_back({u,v,w});}sort(e.begin(),e.end());LL ans = 0;  init(n);for(int i = 0; i < m; i++){int u = e[i].u, v = e[i].v;if(find(u) != find(v)){merge(u,v);ans += e[i].w;}}cout<<ans<<"\n";return 0;
}
//codes1 2017.05.18
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 500010;int n, m;
struct Edge{ int u, v, w; }e[maxn];
bool cmp(Edge a, Edge b){return a.w<b.w;}int fa[maxn];
void init(int _n){for(int i = 1; i <= _n; i++)fa[i] = i;
}
int find(int x){return fa[x]==x? x : fa[x] = find(fa[x]);
}int main(){ios::sync_with_stdio(false);cin>>n>>m;for(int i = 1; i <= m; i++)cin>>e[i].u>>e[i].v>>e[i].w;sort(e+1,e+m+1,cmp);long long ans = 0;init(n);for(int i = 1; i <= m; i++){if(find(e[i].u) != find(e[i].v)){fa[find(e[i].u)] = find(e[i].v);ans += e[i].w;}}cout<<ans<<'\n';return 0;
}

【LOJ#123】最小生成树,Kruskal模板相关推荐

  1. 最小生成树 Kruskal 和 Prim算法及堆优化

    目录 生成树/最小生成树是什么. 一.Kruskal算法 Kruskal模板 二.Prim算法及堆优化 1.遍历 Prim 普通模板 2.堆优化 Prim 堆优化模板 解决最小生成树的问题之前,我们先 ...

  2. hdu 1863(最小生成树kruskal)

    /*Name: hdu1863畅通工程 Author: Try86Date: 10/04/12 12:43Description: 最小生成树(kruskal) */ #include <cst ...

  3. HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...

  4. hdu 1162(最小生成树kruskal)

    /*Name: 最小生成树(kruskal) Author: Date: 10/04/12 19:17 */#include <math.h> #include <cstdio> ...

  5. 图的最小生成树-Kruskal算法

    问题引入 [问题描述] 编写程序,利用带权无向图的邻接矩阵存储,实现图的最小生成树Kruskal算法. [输入形式] 输入图的顶点序列及图的边的情况.如样例所示.边的输入以输入-1,-1,-1作为结束 ...

  6. 【老生谈算法】matlab实现Kruskal避圈算法求最小生成树——Kruskal避圈算法

    基于MATLAB的Kruskal避圈算法求最小生成树 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于MATLAB的Kruskal避 ...

  7. 最小生成树kruskal算法

    最小生成树kruskal算法 概述 算法分析 代码 概述 克鲁斯卡尔(Kruskal)(Kruskal)(Kruskal)算法是求连通网的最小生成树的另一种方法.与普里姆(Prim)(Prim)(Pr ...

  8. 实现最小生成树Kruskal算法(附完整代码)

    实现最小生成树Kruskal算法(附完整代码) Kruskal算法是一种常见的计算最小生成树的算法.它的主要思想是将所有的边按照权值从小到大进行排序,并逐个加入到生成树中,如果加入后不会形成环,则保留 ...

  9. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come

    一:前言 本题需要用到并查集的知识,建议先学完并查集后再看看本题 二:题目 题目给出一个无向连通图,要求求出其最小生成树的权值. 温馨提示:本题请使用kruskal最小生成树算法. 输入格式: 第一行 ...

最新文章

  1. 荣发护肤护甲增强配方 Hair, Skin and Nails Plus 100 tablets
  2. 使用DIV之后 table何去何从
  3. P4922-[MtOI2018]崩坏3?非酋之战!【dp】
  4. 描写计算机老师上课的神态,请你用一段话描写一位老师上课的情景,注意抓住神态语言动作等细节...
  5. python 菜品识别_利用百度智能云结合Python体验图像识别(来自qylruirui)
  6. Esxi直接使用vmdk文件创建虚机
  7. 在Apache上调试Asp.net 1.1/2.0代码
  8. 怎么用python制作随机点名软件_python用tkinter实现一个简易能进行随机点名的界面...
  9. 对java.lang.UnsupportedOperationException 异常的分析
  10. 什么是 PaaS?“平台即服务“ 简介
  11. python 求特征值特征向量 numpy.linalg.eig()
  12. CAD中插入外部参照字体会变繁体_CAD外部参照无法绑定怎么办?
  13. 红楼梦人物出场统计python_用Python分析《红楼梦》:见证贾府的兴衰
  14. 网站蜘蛛日志分析解读,SEO站长自查诊断
  15. python中如何给散点图上面的特定点做标记
  16. Maya的auto save 自動保存
  17. win10自带虚拟机安装centos实操(含参考博文)
  18. 占领大健康高地,育润羊奶粉新品火爆上市
  19. 创维E900V22E armbian刷机(S905L2-B)
  20. 掌纹识别技术的未来发展是怎样的?

热门文章

  1. 使用 Python 第三方库 daft 绘制 PGM 中的贝叶斯网络
  2. 用决策树模型求解回归问题(regression tree)
  3. 拉普拉斯方程与复微分
  4. Tricks(三十二)—— 二维数组转换为一维数组
  5. Tricks(三十二)—— 遍历全部的子串(子数组)
  6. keras 深度神经网络模型的搭建
  7. 隐藏网络计算机,如何在网络中隐藏自己的计算机名称
  8. idea怎么提交到dev分支_idea中新建git分支,并提交到远程github
  9. gini系数 决策树_SKlearn中分类决策树的重要参数详解
  10. python序列类型包括哪三种映射类型_python序列类型包括哪三种