洛谷 - 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 连边” 的时候,用并查集优化连边. 在连边的时候,如果要 ...
随机推荐
- react map 遍历
1.map方法 注:map 返回的是一个新数组 class App extends Component { // constructor(props) { // super(props); // th ...
- IntelliTrace窗口无法弹出的解决办法
最近在使用EF框架,所以需要IntelliTrace窗口进行对ADO的SQL生成监控.可找了半天都无法Call出该窗口. 在Debug模式下,选择调试->窗口 里面根本没有IntelliTrac ...
- LeetCode——Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head. For example, Give ...
- k进制正整数的对k-1取余与按位取余
华电北风吹 天津大学认知计算与应用重点实验室 日期:2015/8/24 先说一下结论 有k进制数abcd,有abcd%(k−1)=(a+b+c+d)%(k−1) 这是由于kn=((k−1)+1)n=∑ ...
- Yii框架中安装srbac扩展方法
首先,下载srbac_1.3beta.zip文件和对应的blog-srbac_1.2_r228.zip 问什么要下载第二个文件,后面就知道了. 按照手册进行配置: 解压缩srbac_1.3beta.z ...
- NVIDIA---CUDA
http://en.wikipedia.org/wiki/CUDA CUDA From Wikipedia, the free encyclopedia CUDA Developer(s) N ...
- 使用外部 toolchain 编译 openwrt
默认编译 openwrt 时会先编译一套 toolchain. 这个步骤耗时较长. 使用外部 toolchain 可以多个 project 共用一套 toolchain , 而且也不重再编译它了. 省 ...
- CGI的知识点
CGI(Common Gateway Interface)是能让webserver和CGI脚本共同处理客户的请求的协议. 它的协议定义文档是http://www.ietf.org/rfc/rfc387 ...
- Java中的常用异常处理方法
觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 ...
- windows下安装RubbitMq
1.下载 下载 rabbitMQ :http://www.rabbitmq.com/download.html,安装rabbitmq需要erlang,下载erlang:http://www.erlan ...