51NOD 1212 无向图最小生成树
N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树。
输入
第1行:2个数N,M中间用空格分隔,N为点的数量,M为边的数量。(2 <= N <= 1000, 1 <= M <= 50000) 第2 - M + 1行:每行3个数S E W,分别表示M条边的2个顶点及权值。(1 <= S, E <= N,1 <= W <= 10000)
输出
输出最小生成树的所有边的权值之和。
输入样例
9 14 1 2 4 2 3 8 3 4 7 4 5 9 5 6 10 6 7 2 7 8 1 8 9 7 2 8 11 3 9 2 7 9 6 3 6 4 4 6 14 1 8 8
输出样例
37
#include<iostream>
#include<queue>
#include<algorithm>
#include<set>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<bitset>
#include<cstdio>
#include<cstring>
//---------------------------------Sexy operation--------------------------//#define cini(n) scanf("%d",&n)
#define cinl(n) scanf("%lld",&n)
#define cinc(n) scanf("%c",&n)
#define cins(s) scanf("%s",s)
#define coui(n) printf("%d",n)
#define couc(n) printf("%c",n)
#define coul(n) printf("%lld",n)
#define debug(n) printf("%d_________________________________\n",n);
#define speed ios_base::sync_with_stdio(0)
#define file freopen("input.txt","r",stdin);freopen("output.txt","w",stdout)
//-------------------------------Actual option------------------------------//
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,n,a) for(int i=n;i>=a;i--)
#define Swap(a,b) a^=b^=a^=b
#define Max(a,b) (a>b?a:b)
#define Min(a,b) a<b?a:b
#define mem(n,x) memset(n,x,sizeof(n))
#define mp(a,b) make_pair(a,b)
#define pb(n) push_back(n)
#define dis(a,b,c,d) ((double)sqrt((a-c)*(a-c)+(b-d)*(b-d)))
//--------------------------------constant----------------------------------//#define INF 0x3f3f3f3f
#define esp 1e-9
#define PI acos(-1)
using namespace std;
typedef pair<int,int>PII;
typedef pair<string,int>PSI;
typedef long long ll;
//___________________________Dividing Line__________________________________/int n,m;
int father[1100000];
struct node
{int x;int y;int k;
}Q[1100000];
int find(int x)
{if(father[x]==x)return x;return father[x]=find(father[x]);
}
bool cmp(node a,node b)
{return a.k<b.k;
}
int main()
{while(~scanf("%d %d",&n,&m)){int cont=0,sum=0,st=0;for(int i=0;i<m;i++){scanf("%d %d %d",&Q[i].x,&Q[i].y,&Q[i].k);cont+=Q[i].k;}sort(Q,Q+m,cmp);for(int i=1;i<=n;i++) father[i]=i;for(int i=0;i<m;i++){int tx=find(Q[i].x);int ty=find(Q[i].y);if(tx!=ty){sum+=Q[i].k;st++;father[tx]=ty;if(st==n-1)break;}}printf("%d\n",sum);}return 0;
}
51NOD 1212 无向图最小生成树相关推荐
- C++用Prim算法实现无向图最小生成树
#include <iostream> using namespace std; #define INFINE 99999999//假装自己是无穷大 const int N = 1010; ...
- 51nod 1676 无向图同构 hash
题意 如果一个无向图重标号后与另一个无向图完全一致(即对于任意两点,他们之间的边在两个图中都存在或都不存在),则称两个无向图同构. 给定两个n个点m条边的无向图,判定两个无向图是否同构. n<= ...
- 51nod--1212 最小生成树
题目: 1212 无向图最小生成树 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 N个点M条边的无向连通图,每条边有一个权值,求该图的最小生成树. Inpu ...
- 51nod 基础题题解(全)
基础题(40): 1000 A + B 1005 大数加法 1006 最长公共子序列Lcs 1018 排序 1019 逆序数 1027 大数乘法 1046 A^B Mod C 1057 N的阶乘(大数 ...
- 怎么证明权重不相同的加权无向图的最小生成树是唯一的 (图论)
转自:https://blog.csdn.net/liangzhaoyang1/article/details/51602926 设G是所有边权均不相同的无向联通图. 证明一: 首先,易证图G中权值最 ...
- 图的最小生成树和最短路径算法思路总结(Prim,Kruskal,Dijkstra,Floyd)
带权无向图->最小生成树算法->Prim算法: 思路: 首先,我们先设置两个集合,U_{}:一个用来放最小生成树的顶点,T_{}:一个用来放最小生成树的边.选取最开始的点V_0,将V_0放 ...
- acm算法模板(1)
1. 几何 4 1.1 注意 4 1.2 几何公式 4 1.3 多边形 6 1.4 多边形切割 9 1.5 浮点函数 10 1.6 面积 15 1.7 球面 16 1.8 三角形 17 1.9 三维几 ...
- AcWing算法提高课 Level-3 第三章 图论
单源最短路的建图方式 1129. 热浪 思路 :单源最短路算法中除了bellmanford一般不用以外,普D为O(n2)O(n^2)O(n2),优D为O(m∗logn)O(m*logn)O(m∗log ...
- 图论 —— 生成树 —— 最小瓶颈路
[概述] 最小瓶颈路是指:在一张无向图上,对于点 u.v 找出从 u.v 的一条简单路径,使得路径上行所有边中最大值最小. 根据查询次数不同,最小瓶颈路问题可分为单次查询和多次查询. [单次查询] 由 ...
最新文章
- Linux grep 命令初步学习
- 网络与IO知识扫盲(六):多路复用器
- linux的apche支持PHP,Linux下apache支持PHP配置
- 自然语言理解——introduction
- c语言时间算法如何以毫秒显示,C语言时间的方法.doc
- 郑杰 | 如何拿回我们自己的医疗数据?
- 珠海小学计算机比赛,欢聚一堂 共叙佳话 —— 参加珠海市中小学信息技术工作年会纪要...
- 清除定时器 和 vue 中遇到的定时器setTimeout setInterval问题
- mysql BDB支持表锁吗_mysql 表锁问题
- 怎么用HD Tune检测硬盘坏道
- 一维搜索——进退法matlab实现(含代码)
- java日期格式化 类_Java日期格式化(DateFormat类)
- 基于自抗扰控制的压力环控制算法研究
- 发现京东客服的一个死循环bug
- 2018年系统架构设计师案例分析真题及详细答案解析
- Cannot connenct to relay host smtp.163.com (php邮件发送失败)
- 初始C语言(初学者福音)
- 电脑上没有蓝牙图标找不到了?
- 国开大学 C语言程序 形考任务4,[国家开放大学] 国开电大人体生理学形考任务4...
- C#中WinFrom保存文件SaveFileDialog类的使用方法