洛谷 - 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 longint n,m; struct edge{int x,y,t;bool operator<(edge that){return t<that.t;} }e[100005];int p[1005]; int _rank[1005]; struct union_find_set{void init(){for(int i=1;i<=1000;i++){p[i]=i;_rank[i]=1;}}int _find(int x){if(p[x]!=x)return p[x]=_find(p[x]);elsereturn 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=0;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=-1;int cnt=n;for(int i=0;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==1)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!=1)maxt=-1;printf("%d\n",maxt); }
.
转载于:https://www.cnblogs.com/Yinku/p/10306475.html
洛谷 - P1111 - 修复公路 - 并查集相关推荐
- 洛谷 P1111 修复公路(最小生成树)
嗯... 题目链接:https://www.luogu.org/problemnew/show/P1111 这道题的关键是读懂题: 首先根据题中的一些扎眼的字眼我们可以判断这是一道用最小生成树来做的题 ...
- P1111 修复公路(并查集)
https://www.luogu.org/problem/P1111 题目背景 AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 题目描述 给出A地区的村庄数NN ...
- 【洛谷 P7299】 【并查集】 Dance Mooves S
[洛谷 P7299] [并查集] Dance Mooves S 题目 解题思路 可以先求出k轮后i能到达next[i] 可以发现将会组成由很多个简单环组成的图,它们能到达的点可以共享给同一个环内的 所 ...
- 洛谷 P1967货车运输 并查集+贪心 不需要用LCA!
题目链接 题目链接 题解 要求所有的路径中最小边长的最大值! 我们贪心的加边,依照边从大往小的方式往里添加,然后合并并查集. 每次当查询分布在两个待合并的并查集的时候,当前的边长就是这次查询的答案. ...
- 洛谷P1551 亲戚(并查集)
题目链接 思路: 并查集的模板题目 关于并查集相关知识可以看此博客 AC代码 #include<iostream> #include<cstdio> #include<a ...
- 每日一题——洛谷 P1551 亲戚 (并查集)
大家好,我是爬行系,今天打卡并查集相关例题 文章目录 并查集 1.概念 2.模板 例题 1.题目描述 2.AC代码 更多练习题 总结 并查集 1.概念 并查集的思想是用一个数组表示了整片森林(pare ...
- 洛谷 - P4997 - 不围棋 - 并查集 - 模拟
https://www.luogu.org/problemnew/show/P4997 首先是改变气的定义,使得容易计算,这个很好理解. 然后使用并查集,因为要维护整个连通块的性质. 最后的难点在于, ...
- 解题:洛谷3402 可持久化并查集
题面 滚下去补学考之前更一发 基于可持久化线段树实现(我不很喜欢"主席树"这个名字),注意不能路径压缩,首先这与可持久化的思想冲突(即尽量利用之前已有的部分,只修改有修改的部分,路 ...
- 【洛谷1892】团伙 并查集
题意 题面说的很清楚 同noip2010关押罪犯 传送门:http://blog.csdn.net/dadatu_zhao/article/details/78806584 #include<i ...
最新文章
- 从构建分布式秒杀系统聊聊验证码
- 一万的阶乘c语言方法,求10000的阶乘(c语言代码实现)
- OC基础 代理和协议
- android 设置网络超时时间设置,Android:AndroidHttpClient-如何设置超时时间?
- orcale 之 集合操作
- 解决VS2013或2017中类似于:error C4996: 'scanf': This function or variable may be unsafe的问题
- nginx+php使用open_basedir限制站点目录防止跨站
- WinForm 使用 HttpUtility
- iperf简介与下载安装
- goahead webserver源码分析
- Excel排列组合、加双引号等常用操作
- [Matlab] 单次测量的中误差、算数平均值的中误差、加权求最或然值、函数拟合、莫迪图的计算实例
- 面向对象之魔术方法_call
- mac更新go到最新版本
- buu firmware
- Psychtoolbox刺激呈现工具包的安装及下载
- WLAN 无线局域网
- 青龙面板库 大全(9.6更新)
- 宝付正式执行“适当降低小微企业支付手续费”工作部署任务
- 上一主题 下一主题 一个微信账号登陆信息提取软件,有人知道吗?