洛谷 - P1111 - 修复公路 - 并查集
https://www.luogu.org/problemnew/solution/P1111
并查集的水题,水题都错了好多发。
首先并不是有环就退出,而是连通分支为1才退出,每次合并成功连通分支才会减1。
还有一个bug就是假如没有到达连通分支为1,不应该输出maxt而是要输出-1。所以应该是在cnt==1的情况再更新maxt并break才对。
#include<bits/stdc++.h>
using namespace std;
#define ll long long int n,m;
struct edge{
int x,y,t;
bool operator<(edge that){
return t<that.t;
}
}e[]; int p[];
int _rank[];
struct union_find_set{
void init(){
for(int i=;i<=;i++){
p[i]=i;
_rank[i]=;
}
} int _find(int x){
if(p[x]!=x)
return p[x]=_find(p[x]);
else
return x;
}
bool union_set(int x,int y){
int fx=_find(x);
int fy=_find(y);
if(fx==fy){
return false;
}
else{
if(_rank[fx]<=_rank[fy]){
if(_rank[fx]==_rank[fy])
_rank[fy]++;
p[fx]=fy;
}
else{
p[fy]=fx;
}
return true;
}
}
}; int main(){
scanf("%d%d",&n,&m);
for(int i=;i<m;i++){
scanf("%d%d%d",&e[i].x,&e[i].y,&e[i].t);
} sort(e,e+m); union_find_set s;
s.init(); int maxt=-;
int cnt=n;
for(int i=;i<m;i++){
if(s.union_set(e[i].x,e[i].y)==false){
maxt=e[i].t;
}
else{
maxt=e[i].t;
cnt--;
if(cnt==)
break;
}
} /*if(maxt==-1){
maxt=e[m-1].t;
for(int i=1;i<=n;i++){
s._find(i);
}
for(int i=2;i<=n;i++){
if(p[i]!=p[i-1]){
maxt=-1;
break;
}
}
}*/ if(cnt!=)
maxt=-; printf("%d\n",maxt);
}
.
洛谷 - P1111 - 修复公路 - 并查集的更多相关文章
- 洛谷 P1111 修复公路——并查集
先上一波链接qwq https://www.luogu.org/problem/P1111 这题就是裸的并查集咯qwq 维护一下连通块的数目 数目变为一的时候整个图就连通了 输出此时的答案就okay拉 ...
- 洛谷P1111修复公路并查集改
看了他们的题解感觉很震惊,为什么要用kruskal,这题要用到最小生成树吗??? 38行短短的程序就可以了,我觉得学习不是一种套用,套自己学的,而且题解很大一部分都是kruskal. 个人认为自己的程 ...
- 洛谷 P1111 修复公路 Label:并查集
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- 洛谷P1111 修复公路
题目背景 A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你什么时 ...
- 洛谷——P1111修复公路(并查集)
题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN,和公路数MM,公路是双向的.并告诉你每条公路的连着哪两个村庄,并告诉你 ...
- 洛谷 P1111 修复公路
题目链接 https://www.luogu.org/problemnew/show/P1111 以后只发题目链接!!! 题目大意 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连 ...
- 洛谷 P1111 修复公路(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1111 这道题的关键是读懂题: 首先根据题中的一些扎眼的字眼我们可以判断这是一道用最小生成树来做的题 ...
- bzoj3673 & bzoj3674 & 洛谷P3402 可持久化并查集
题目:bzoj3673:https://www.lydsy.com/JudgeOnline/problem.php?id=3673 bzoj3674:https://www.lydsy.com/Jud ...
- 洛谷 3295 [SCOI2016]萌萌哒——并查集优化连边
题目:https://www.luogu.org/problemnew/show/P3295 当要连的边形如 “一段区间内都是 i 向 i+L 连边” 的时候,用并查集优化连边. 在连边的时候,如果要 ...
随机推荐
- UVA - 11178-Morley’s Theorem
就是给出一个等边三角形的三个顶点坐标 然后每一个角的三等分线会交错成一个三角形,求出这个三角形的顶点坐标 一開始.我题意理解错了--还以为是随意三角形,所以代码可以处理随意三角形的情况 我的做法: 通 ...
- fabricJs使用系列(一)
Get the canvas object while using fabric js I'm using Fabric.js and I've created a fabric canvas obj ...
- Codefoces 432 C. Prime Swaps(水)
思路:从前往后想将1调整好,在调整2....这样平均每次有五次机会调整,并且有相当一部分可能都用不到五次,能够一试.ac 代码: #include<iostream> #include&l ...
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码(转)
本文来自 诗商·柳惊鸿 Poechant CSDN博客,转载请注明源地址:FastDFS的配置.部署与API使用解读(2)上传文件到FastDFS分布式文件系统的客户端代码 在阅读本文之前,请您先通过 ...
- 在MVC中使用泛型仓储模式和工作单元来进行增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
- Cluster Mode Overview
https://spark.apache.org/docs/latest/cluster-overview.html
- DOM操作三
1.以一个对象的x和y属性的方式返回滚动条的偏移量 function getScrollOffsets(w){ //使用指定的窗口,如果不带参数则使用当前窗口 w= w || window; //除了 ...
- html 常用转译空格字符
本人有时候做表格强迫症,字段有的是3个字有的是4个字,也有两个字的,所有不对齐感觉看着难受, 因此需要用空格来让表头文字对齐,找到了下面几个常用的转译字符. 1. &160#;不断行的空白( ...
- iOS 如何改变表视图分割线在iOS7中的默认偏移
- (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = NO; if ([self ...
- ES6 一些新特性的总结
一.箭头函数 ES6中新增了一个箭头函数 ()=>,箭头函数通俗点讲就是匿名函数.箭头函数还有不同点在于改变函数中this,和js中的.bind 的方法差不多,继承后指向的不是最新的函数, ...