Kruscal算法---最小生成树
Kruscal算法:
Kruscal算法是加边。
记录每条路的权值,然后每次都选择权值最小的边加入集合,同时选中的每条边的两个点也用并查集合并,
直到所有的点都被加入了,就是最小生成树。
复杂度:
时间复杂度只和边有关系,O(E * logE)。
代码:
hihocoder1098
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
typedef long long ll;
const int maxn=1e6+7;
#define INF 0x3f3f3f3f
int fa[maxn];
int init(int n){for(int i=0;i<=n;i++)fa[i]=i;
}
int Find(int x){return fa[x]==x?x:fa[x]=Find(fa[x]);
}
int Union(int a,int b){int p1=Find(a),p2=Find(b);fa[p2]=p1;
}
struct edge{int from,to,val;
}Edge[maxn];
bool cmp(edge a,edge b){return a.val<b.val;
}
int n,m;
int main(){scanf("%d%d",&n,&m);init(n);for(int i=0;i<m;i++){scanf("%d%d%d",&Edge[i].from,&Edge[i].to,&Edge[i].val);}sort(Edge,Edge+m,cmp);//边权排序int ans=0;for(int i=0;i<m;i++){//依次选择最小的if(Find(Edge[i].from)!=Find(Edge[i].to)){//并查集判环Union(Edge[i].from,Edge[i].to);ans+=Edge[i].val;}}printf("%d\n",ans);return 0;
}
Kruscal算法---最小生成树相关推荐
- #1098 : 最小生成树二·Kruscal算法
#1098 : 最小生成树二·Kruscal算法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用 ...
- hihoCoder-1098最小生成树二·Kruscal算法 (最小生成树)
最小生成树二·Kruscal算法 描述 随着小Hi拥有城市数目的增加,在之间所使用的Prim算法已经无法继续使用了--但是幸运的是,经过计算机的分析,小Hi已经筛选出了一些比较适合建造道路的路线,这个 ...
- Kruscal算法+并查集 求解最小生成树
http://ac.jobdu.com/problem.php?pid=1347 孤岛连通工程 刚开始的时候使用qsort排序函数进行排序提交一直都是TLE,后来无意中改为sort排序函数提交就 ...
- [算法]最小生成树-普利姆算法
2019独角兽企业重金招聘Python工程师标准>>> 目前正在看<大话数据结构>,其中介绍了普利姆算法,自己对算法理解能力太差,能够手写求出最小生成树,但是写出算法代码 ...
- 对应生成树的基本回路_数据结构与算法——最小生成树
1 引言 在之前的文章中已经详细介绍了图的一些基础操作.而在实际生活中的许多问题都是通过转化为图的这类数据结构来求解的,这就涉及到了许多图的算法研究. 例如:在 n 个城市之间铺设光缆,以保证这 n ...
- Kruskal算法 最小生成树
Kruskal算法 Kruskal的由来 Prim算法利用了MST的性质:假设N= (V,E)是一个连通图,U是顶点集V的一个非空子集,若(u,v)是一条最小权值的边,其中u属于U,v属于V-U,则必 ...
- prim算法 最小生成树
Prim算法 Prim算法的由来 Prim算法利用了MST的性质:假设N= (V,E)是一个连通图,U是顶点集V的一个非空子集,若(u,v)是一条最小权值的边,其中u属于U,v属于V-U,则必存在一颗 ...
- prim算法 + 最小生成树的打印 C语言
问题 要在n个城市之间假设网络,要求只架设n-1条线路,并保证个城市之间网络链接,已知城市间架设网络的统计数据,其中列出了有可能架设的网络和对应的成本求最低价格方案,以图形方式给出架设方案,并输出求解 ...
- [算法] 克鲁卡尔算法 最小生成树
package com.guigu.algorithm.kruskal;import jdk.internal.org.objectweb.asm.tree.MultiANewArrayInsnNod ...
- Prim算法最小生成树Java超详解
算法简介 算法流程 具体实现 Code Input Output 使用优先队列实现 API说明 Code Input Output 算法简介 Prim算法计算最小生成树,它的每一步都会为一颗生长树添加 ...
最新文章
- MySQL表最大能达到多少?
- 【网址收藏】达内Django视频笔记收藏
- vue中mode的设置
- 微信支付中的刷卡支付和扫码支付测试
- php底层开发框架, yaf,swoole,hiphop
- 伺服系统 计算机仿真,减摇鳍电伺服系统的计算机仿真研究-应用科技-哈尔滨工程大学.PDF...
- SpringBoot项目获取Spring容器中的bean
- java概述及我的第一个java项目
- ADNI数据集阅读整理
- HTML链接会议申请,会议流程.html
- 【独行秀才】macOS Big Sur 11.5 Beta 1(20G5023d)原版镜像
- matlab命令 elempro,装好MATLAB后,The markup in the document preceding the root elem
- 机器学习之加州房价预测(一)
- 【项目实践】YOLO V4万字原理详细讲解并训练自己的数据集(pytorch完整项目打包下载)...
- mysql数据写入磁盘的原理_WAL(Write Ahead Log)机制解析
- SLAM无人车计算地图坐标,ros中计算地图坐标,rosweb计算画布对应的坐标(含代码,含公式,超详细),开发跨系统地图导航必备算法【可实现qt,android,c#,mfc,html等地图开发】
- Flash报表控件(FusionCharts) 使用
- 网络流量监控软件——MRTG(Multi Router Traffic Grapher)
- 自动化立体仓库可以为企业带来什么效益?
- 实现QQ表情功能(2)
热门文章
- 使用截图工具FastStone Capture
- Asp.net开发必备51种代码
- 从一个小Demo看React的diff算法
- [译]用javascript实现一门编程语言-词法分析
- [NOIP2013D2]
- U盘病毒“替身”大量交叉感染 打印店电脑助扩散
- 更新CocoaPods1.1.0碰到的问题及知识点
- ubuntu 11.10 因为gcc版本过高引起的错误,安装 gcc 4.4(转)
- Linux设备驱动模型-Kobject
- proc文件系统实现用户空间与内核空间的数据通信