洛谷[P1396]营救 并查集
题目地址http://www.luogu.org/problem/show?pid=1396
P1396拯救膜法师(欸??)
题目描述
“咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门……
妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了t区,而自己在s区。
该市有m条大道连接n个区,一条大道将两个区相连接,每个大道有一个拥挤度。小明的妈妈虽然很着急,但是不愿意拥挤的人潮冲乱了她优雅的步伐。所以请你帮她规划一条从s至t的路线,使得经过道路的拥挤度最大值最小。
输入输出格式
输入格式:
第一行四个数字n,m,s,t。
接下来m行,每行三个数字,分别表示两个区和拥挤度。
(有可能两个区之间有多条大道相连。)
输出格式:
输出题目要求的拥挤度。
输入输出样例
3 3 1 3 1 2 2 2 3 1 1 3 3
2
说明
数据范围
30% n<=10
60% n<=100
100% n<=10000,m<=2n,拥挤度<=10000
题目保证1<=s,t<=n且s<>t,保证可以从s区出发到t区。
标准并查集,将数据按照拥挤度从小到大排序,每次将当前疲劳值最小的两个区域合并再判断即可。
曾经有个人相信了luogu的标签,于是一直在思考如何在并查集上二分
代码实现
#include<algorithm>//sort
#include<cstdio>
using namespace std;
int m,n,s,t;
int f[20050];
struct Duan2baka{int x,y,k;
}a[20050];
bool cmp(Duan2baka a,Duan2baka b){return a.k<b.k;
}
int find(int k){//并查集,查找是否在统一集合 return f[k]==k?k:f[k]=find(f[k]);
}
inline void csh(){for(int i=1;i<=m;i++)f[i]=i;
}
int main(){scanf("%d%d%d%d",&n,&m,&s,&t);for(int i=1;i<=m;i++){scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].k);}csh();sort(a+1,a+m+1,cmp);//按照拥挤度排序 for(int i=1;i<=m;i++){int fa=find(f[a[i].x]);int fb=find(f[a[i].y]);if(fa!=fb)f[fa]=fb;if(find(f[s])==find(f[t]))//判断是否在一集合内{printf("%d",a[i].k);return 0;}}
return 0;
}
洛谷[P1396]营救 并查集相关推荐
- P1396 营救(并查集+二分)
思路:检验函数中,先初始化每个节点的下标,每调用检验函数就从新使用一次并查集(并查集的时间复杂度非常低),然后,就看当一条路的价值val<=假设最大值x时,就把他们连接起来. #include& ...
- 洛谷P4092树——并查集
题目:https://www.luogu.org/problemnew/show/P4092 利用并查集,倒序离线,那么从倒序来看被撤销标记的点就再也不会被标记,所以用并查集跳过: 莫名其妙的WA,调 ...
- 洛谷 P1396 营救
题目链接 https://www.luogu.org/problemnew/show/P1396 题目描述 "咚咚咚--""查水表!"原来是查水表来了,现在哪里 ...
- 洛谷P1396 营救 题解
题目:https://www.luogu.org/problemnew/show/P1396 分析: 这其实一看就是一个最短路的近似模板的题目,但我们要注意到两个区之间可能会有多条道路,所以说我们只需 ...
- 洛谷P1396营救(最小生成树)
题目描述 "咚咚咚--""查水表!"原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门-- 妈妈下班回家,街坊邻居说小明被一群陌生 ...
- 4.11每日一题之亲戚(洛谷c++)|简单并查集
- 并查集——营救(洛谷 P1396)
题目选自洛谷P1396 看到最大的最小很多人想到二分,但是可以有更好的解法. 我们不妨用并查集维护这个图,将边从小到大排序,每次取出边权最小的边,若该边的起点与终点未在一个集合内,就将其合并.当源点与 ...
- 营救(洛谷-P1396)
题目描述 "咚咚咚--""查水表!"原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门-- 妈妈下班回家,街坊邻居说小明被一群陌生 ...
- 并查集模板——并查集(洛谷 P3367)
题目选自洛谷P3367 是并查集的最入门的题目,也是并查集的模板题~~ 如果你还不知道并查集是什么? 请看我的这篇文章 点击链接 题目描述 如题,现在有一个并查集,你需要完成合并和查询操作. 输入格式 ...
最新文章
- php union all,Union与Union All的区别
- injectionForXcode代码注入步骤
- [游戏模版15] Win32 飞机射击
- hihoCoder 1578 Visiting Peking University 【贪心】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)...
- 北斗导航 | 现代授时技术——北斗GPS导航系统
- 顶会论文轮番炸场,本周哪些论文最值得读?
- Python版——博客网站四 编写日志创建页
- android activity调用Adapter方法刷新列表UI,RecyclerView.Adapter
- 《Deep Learning》—— 数学基础
- ASP.NET自定义错误页面,分离配置信息,多环境发布
- Lapsus$ 组织攻击很多大厂都在合作的软件咨询公司 Globant
- 根据dpr设置html fontsize,如何为不同移动设备设置html不同的font-size?
- 黑马程序员---java基础-----------------图形化界面(GUI)
- 功能测试Ⅷ——业务流程测试
- mysql的脏数据_数据库的脏数据问题
- C++中 sprintf函数的用法
- 高中计算机考试实施方案,山东省高中信息技术学业水平考试实施方案及思考
- 明日之后怎么在电脑上玩 明日之后电脑版图文攻略
- Docker Swarm secrets
- cubieboard mysql_【Linux】【笔记】Cubieboard开发板Debian系统+SAMBA共享+远程迅雷Xware+Nginx+PH......