【模板】MST(Kruskal)
代码如下
#include <bits/stdc++.h>
using namespace std;
const int maxv=2e5+10;
const int maxe=5e5+10;
inline int read(){
    int x=0,f=1;char ch;
    do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
    do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
    return f*x;
}
struct node{int from,to,w;}e[maxe];
int n,m,sum,f[maxv];
long long ans;
bool cmp(const node& x,const node& y){return x.w<y.w;}
int find(int x){return x==f[x]?x:f[x]=find(f[x]);}
void read_and_parse(){
	n=read(),m=read();
	for(int i=1;i<=n;i++)f[i]=i;
	for(int i=1;i<=m;i++)scanf("%d%d%d",&e[i].from,&e[i].to,&e[i].w);
}
void solve(){
	sort(e+1,e+m+1,cmp);
	for(int i=1;i<=m;i++){
		if(sum==n-1)break;
		int x=find(e[i].from),y=find(e[i].to);
		if(x^y)f[x]=y,ans+=e[i].w,++sum;
	}
	printf("%lld\n",ans);
}
int main(){
	read_and_parse();
	solve();
	return 0;
}
												
											【模板】MST(Kruskal)的更多相关文章
- MST(Kruskal’s Minimum Spanning Tree Algorithm)
		
You may refer to the main idea of MST in graph theory. http://en.wikipedia.org/wiki/Minimum_spanning ...
 - 最小生成树模板【kruskal & prim】
		
CDOJ 1966 Kruskal 解法 时间复杂度O(mlogm) m为边数,这里主要是边排序占时间,后面并查集还好 #include <cstdio> #include <cst ...
 - 【模板】Kruskal
		
int n, m; struct Edge { int u, v, w; }a[MAX_M]; // 令a关于w升序排列 int r[MAX_N]; // 并查集 int Find(int x) { ...
 - POJ1679 The Unique MST(Kruskal)(最小生成树的唯一性)
		
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27141 Accepted: 9712 D ...
 - NOI.AC #31 MST —— Kruskal+点集DP
		
题目:http://noi.ac/problem/31 好题啊! 题意很明白,对于有关最小生成树(MST)的题,一般是要模拟 Kruskal 过程了: 模拟 Kruskal,也就是把给出的 n-1 条 ...
 - MST — Kruskal's algorithm
		
算法简介 Kruskal算法可用来求解MST(最小生成树)问题,还可以作为迷宫生成算法等. 算法分析 其实算法不难理解,算法先要将 $ G(V, E) $ 的集合 $ E $ 按权重 $ \Omega ...
 - 最小生成树(次小生成树)(最小生成树不唯一) 模板:Kruskal算法和 Prim算法
		
Kruskal模板:按照边权排序,开始从最小边生成树 #include<algorithm> #include<stdio.h> #include<string.h> ...
 - POJ 1679 The Unique MST --Kruskal应用
		
这题可以用次小生成树解,这里用Kruskal算法来做.每条边除维护u,v,w外,还维护: used:表示这条边是否加过 eq:表示有没有与这条边相等的边 del:删除标记,以便删边之用 如果对于一个最 ...
 - 模板——最小生成树kruskal算法+并查集数据结构
		
并查集:找祖先并更新,注意路径压缩,不然会时间复杂度巨大导致出错/超时 合并:(我的祖先是的你的祖先的父亲) 找父亲:(初始化祖先是自己的,自己就是祖先) 查询:(我们是不是同一祖先) 路径压缩:(每 ...
 - 最小生成树 (Minimum Spanning Tree,MST) --- Kruskal算法
		
本文链接:http://www.cnblogs.com/Ash-ly/p/5409265.html 引导问题: 假设要在N个城市之间建立通信联络网,则连通N个城市只需要N - 1条线路.这时,自然会考 ...
 
随机推荐
- 20155239吕宇轩  Exp1 PC平台逆向破解(5)M
			
20155239 网络对抗 Exp1 PC平台逆向破解(5)M 实验内容 (1).掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码(1分) (2)掌握反汇编与十六进制编程器 (1分) ...
 - effective c++ 笔记 (9-12)
			
//---------------------------15/03/29---------------------------- //#9 绝不在构造和析构过程中调头virtual函数 { / ...
 - Mysql_临时表
			
CREATE TEMPORARY TABLE test_info ( test_name ) NOT NULL, test_totail ,) NOT NULL DEFAULT 0.00, test_ ...
 - 如何在Windows Server 2003搭建Windows+iis+asp+access环境
			
前提系统盘镜像要加载进来方案一:开始->管理您的服务器->添加或删除角色->下一步->自定义配置->下一步->选择应用程序服务器(IIS,ASP.NET)-> ...
 - 深入了解Kubernetes REST API的工作方式
			
关于Kubernetes REST API的工作方式: 在哪里以及如何定义从REST路径到处理REST调用的函数的映射? 与etcd的交互发生在哪里? 从客户端发出请求到保存在etcd中对象的端到端路 ...
 - mac 安装 tomcat 配置
			
前面的话:记录下 Mac 安装配置 Tomcat 过程 1. 下载安装 Tomcat 下载 Tomcat 地址(官方地址):https://tomcat.apache.org/download-80. ...
 - 《Linux内核设计与实现》第一二章读书笔记
			
第一章 Linux内核简介 1.Unix简介 (一)概念:支持抢占式多任务.多进程.虚拟内存.换页.动态链接和TCP/IP网络的现代化操作系统. (二)Unix特点(层次化结构): Unix很简洁,仅 ...
 - Visual Studio 2015的安装和简单的测试
			
首先是Visual Studio 2015的安装 Visual Studio是微软开发的一套基于组件的软件开发工具,目前最新的版本是2015. 在 I Tell you 网站下载Visual Stud ...
 - spring mvc自定义注解--访问时验证
			
作用:在访问controller的方法时,判断用户是否是登陆状态. step1:定义注解 import java.lang.annotation.ElementType; import java.la ...
 - Objective-C runtime 机制
			
Runtime使用C语言结构体表示对象,用C语言函数表示方法,这些C语言函数和结构体被Runtime封装后,我们就可以在程序中执行创建,检查,修改类和对象和他们的方法 OC的Class其实是一个obj ...