GYM 100712 F.Travelling Salesman(最小生成树-Kruskal)
来源:互联网 发布:redis 缓存数据库表 编辑:程序博客网 时间:2024/05/09 13:17
Description
给出一张n个点,m条边的无向连通图,问最小生成树上的最大边权是多少
Input
第一行一整数T表示用例组数,每组用例首先输入两个整数n,m分别表示点数和边数,之后m行每行三个整数u,v,w表示u和v之间有一条权值为w的边(1<=T<=64,3<=n<=100000,n-1<=w<=100000,1<=u!=v<=n,1<=w<=10000)
Output
输出最小生成树上最大边权
Sample Input
Sample Output
4
2
Solution
Kruskal裸题
Code
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 111111int fa[maxn];void init(int n){ for(int i=1;i<=n;i++)fa[i]=i;} int find(int x){ if(fa[x]==x)return x; return fa[x]=find(fa[x]);}void unite(int x,int y){ x=find(x),y=find(y); if(x==y)return ; fa[x]=y;}int T,n,m;struct node{ int u,v,w; bool operator<(const node&b)const { return w<b.w; }}e[maxn];int main(){ scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); init(n); for(int i=0;i<m;i++)scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); sort(e,e+m); int ans=0; for(int i=0;i<m;i++) if(find(e[i].u)!=find(e[i].v)) { ans=e[i].w; unite(e[i].u,e[i].v); } printf("%d\n",ans); } return 0;}
0 0
- GYM 100712 F.Travelling Salesman(最小生成树-Kruskal)
- Gym 100712F - Travelling Salesman
- Gym-100712F-Travelling Salesman
- Gym 100712F Travelling Salesman
- Gym 100712F Travelling Salesman
- Gym 100712F Travelling Salesman(二分+并查集)
- 1005. F.Snowy Roads最小生成树Kruskal算法
- Gym 100803F There is No Alternative(最小生成树)
- 最小生成树(Kruskal)
- 最小生成树(Kruskal)
- 最小生成树(kruskal)
- 最小生成树(kruskal)
- 最小生成树(Kruskal)
- 最小生成树(Kruskal)
- 最小生成树(kruskal)
- 最小生成树(kruskal)
- kruskal(最小生成树)
- 最小生成树(Kruskal)
- CTF--2016XDCTF全国网络安全大赛之reverse2
- java项目中的文件上传
- hihocoder#1044 : 状态压缩·一(状压dp)
- 浅谈语义主题计算
- JDK1.8源码阅读系列之三:Vector
- GYM 100712 F.Travelling Salesman(最小生成树-Kruskal)
- Jmeter接口测试设置
- [C++]new带括号和不带括号
- winfrom动态抓取网页数据
- Android中一键退出程序的实现
- 802.11n CSI tools 安装指南
- MATLAB图像中检测圆
- java实现生产者消费者问题
- 119. Pascal's Triangle II