codevs 1638_洛谷 1111_修复公路_并查集
来源:互联网 发布:防止微信屏蔽分享域名 编辑:程序博客网 时间:2024/05/01 01:10
题目大意
给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路)
思路
就是一个并查集,然后将时间从小到大排序,每次取最小的合并,如果可以合并就判断减少一个集合,最后只剩一个集合时输出时间
#include <stdio.h>#include <algorithm>using namespace std;struct arr{ int x,y,t;};arr a[1000000];int f[1000000];int find(int x){ if (!f[x]) return x; f[x]=find(f[x]); return f[x];}int insert(int x,int y){ if (find(x)!=find(y)) { f[find(x)]=find(y); return 1; } return 0;}int cam(arr a,arr b){ return a.t<b.t;}int main(){ int n,m; scanf("%d%d",&n,&m); for (int i=1;i<=m;i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].t); sort(a+1,a+m+1,cam); int t=n,xx=0; for (int i=1;i<=m;i++) { if (find(a[i].x)!=find(a[i].y)) { insert(a[i].x,a[i].y); t--; } if (t==1) { printf("%d\n",a[i].t); xx=1; break; } } if (xx==0) printf("-1\n");}
1 0
- codevs 1638_洛谷 1111_修复公路_并查集
- codevs 2597_团伙_并查集
- 洛谷 1111 修复公路 并查集
- 修复公路 洛谷1111 并查集
- codevs 1365_浴火银河星际跳跃_并查集
- 洛谷 并查集 修复公路
- 【并查集】洛谷 P1111 修复公路
- 修复公路 洛谷1111 并查集 水题
- 修复公路(并查集)
- 洛谷 3367_[模版] 并查集
- 图论_并查集
- 并查集_食物链
- 并查集_ 模板
- 洛谷Oj-修复公路-并查集 + 快排
- hdu 1878_欧拉回路_并查集
- poj 1182_食物链_并查集
- SSL 1255_银河英雄传说_并查集
- SSL 1662_家庭问题_并查集
- 学习记录——网络层(4)
- Effective java读书笔记
- 一种更通用的编译期反射
- 笔记,执行mybatis自动映射的语句
- 使用C#将HTML文本转换为普通文本,去掉所有的Html标记
- codevs 1638_洛谷 1111_修复公路_并查集
- 网站美化常见CSS
- delphi 用别名的方式访问excel写入数据,实现非标格式报表输出
- 浅谈CSS3新特性——动画animation
- 支付
- handler的使用
- c++类 class
- TP 框架使用时的盲点
- nginx+apache实现网站的ssl加密(https)