news 2026/5/1 8:29:57

信奥赛C++提高组csp-s之并查集(案例实践)2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信奥赛C++提高组csp-s之并查集(案例实践)2

信奥赛C++提高组csp-s之并查集(案例实践)2

题目描述

妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小明被带到了t tt区,而自己在s ss区。

该市有m mm条大道连接n nn个区,一条大道将两个区相连接,每个大道有一个拥挤度。小明的妈妈虽然很着急,但是不愿意拥挤的人潮冲乱了她优雅的步伐。所以请你帮她规划一条从s sst tt的路线,使得经过道路的拥挤度最大值最小。

输入格式

第一行有四个用空格隔开的n nnm mms sst tt,其含义见【题目描述】。

接下来m mm行,每行三个整数u , v , w u, v, wu,v,w,表示有一条大道连接区u uu和区v vv,且拥挤度为w ww

两个区之间可能存在多条大道

输出格式

输出一行一个整数,代表最大的拥挤度。

输入输出样例 1
输入 1
3 3 1 3 1 2 2 2 3 1 1 3 3
输出 1
2
数据规模与约定
  • 对于30 % 30\%30%的数据,保证n ≤ 10 n\leq 10n10
  • 对于60 % 60\%60%的数据,保证n ≤ 100 n\leq 100n100
  • 对于100 % 100\%100%的数据,保证1 ≤ n ≤ 10 4 1 \leq n\leq 10^41n1041 ≤ m ≤ 2 × 10 4 1 \leq m \leq 2 \times 10^41m2×104w ≤ 10 4 w \leq 10^4w1041 ≤ s , t ≤ n 1 \leq s, t \leq n1s,tn。且从s ss出发一定能到达t tt区。
样例输入输出 1 解释

小明的妈妈要从1 11号点去3 33号点,最优路线为1 11->2 22->3 33

代码实现

#include<bits/stdc++.h>usingnamespacestd;intn,m,s,t,ans;structedge{intx,y,w;// 边的两个端点和拥挤度}a[20010];intfa[10010];// 并查集数组// 并查集查找根节点(带路径压缩)intfind(intx){if(fa[x]!=x)fa[x]=find(fa[x]);returnfa[x];}// 并查集合并voidunionSet(intx,inty){introotx=find(x);introoty=find(y);if(rootx==rooty)return;fa[rooty]=rootx;}// 检查当拥挤度限制为mid时,s和t是否连通boolcheck(intmid){// 初始化并查集for(inti=1;i<=n;i++)fa[i]=i;// 遍历所有边,将拥挤度不超过mid的边加入图中for(inti=1;i<=m;i++){if(a[i].w<=mid){unionSet(a[i].x,a[i].y);}}// 检查s和t是否连通returnfind(s)==find(t);}intmain(){cin>>n>>m>>s>>t;// 读入所有边for(inti=1;i<=m;i++){cin>>a[i].x>>a[i].y>>a[i].w;}// 二分查找最小的最大拥挤度intl=1,r=1e4;// 拥挤度范围是1-10000while(l<=r){intmid=(l+r)/2;if(check(mid)){// 如果当前mid能满足条件,尝试更小的值ans=mid;r=mid-1;}else{// 如果当前mid不能满足条件,需要更大的值l=mid+1;}}cout<<ans;return0;}

功能分析

这个程序解决的是"最小化路径上最大拥挤度"的问题,采用了二分答案 + 并查集的方法。

核心思路
  1. 问题转化:寻找从s到t的一条路径,使得路径上所有边的最大拥挤度最小
  2. 二分策略:对拥挤度的可能取值进行二分,检查某个拥挤度限制下s和t是否连通
  3. 连通性检查:使用并查集来高效判断在只使用拥挤度不超过某值的边时,s和t是否连通
算法步骤
  1. 输入处理:读取图的节点数、边数、起点和终点,以及所有边的信息

  2. 二分查找

    • 左边界l=1,右边界r=10000(题目保证w≤10000)
    • 对于每个中间值mid,检查在只使用拥挤度≤mid的边时,s和t是否连通
  3. 连通性检查(check函数)

    • 初始化并查集,每个节点自成一个集合
    • 遍历所有边,将拥挤度不超过mid的边连接的两个节点合并
    • 最后检查s和t是否在同一个集合中
  4. 结果输出:输出满足条件的最小拥挤度

各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}
  • 一、CSP信奥赛C++通关学习视频课:
    • C++语法基础
    • C++语法进阶
    • C++算法
    • C++数据结构
    • CSP信奥赛数学
    • CSP信奥赛STL
  • 二、CSP信奥赛C++竞赛拿奖视频课:
    • 信奥赛csp-j初赛高频考点解析
    • CSP信奥赛C++复赛集训课(12大高频考点专题集训)
  • 三、csp高频考点知识详解及案例实践:
    • CSP信奥赛C++之动态规划
    • CSP信奥赛C++之标准模板库STL
  • 四、考级、竞赛刷题题单及题解:
    • GESP C++考级真题题解
    • CSP信奥赛C++初赛及复赛高频考点真题解析
    • CSP信奥赛C++一等奖通关刷题题单及题解

详细内容:

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转


2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:29:28

【Dify文档管理必修课】:正确设置保存路径避免数据丢失

第一章&#xff1a;Dify文档保存路径的核心概念Dify 是一个开源的 LLM 应用开发平台&#xff0c;支持可视化编排、数据集管理与应用部署。在使用 Dify 过程中&#xff0c;理解其文档保存路径机制对于维护数据一致性、实现备份恢复以及多环境迁移至关重要。文档存储的基本结构 D…

作者头像 李华
网站建设 2026/5/1 7:27:58

UDS基础架构解析:适合新手的深度剖析

从零搞懂UDS诊断&#xff1a;一个工程师的实战入门指南你有没有遇到过这样的场景&#xff1f;手握一台诊断仪&#xff0c;连上车辆OBD接口&#xff0c;点下“读取故障码”按钮——屏幕上瞬间跳出十几条DTC&#xff1b;再点“刷写程序”&#xff0c;进度条缓缓推进&#xff0c;几…

作者头像 李华
网站建设 2026/5/1 7:29:20

同或门与其他逻辑门协同FPGA部署的实战经验

同或门在FPGA中的实战设计&#xff1a;不只是“相等判断”&#xff0c;更是性能与可靠性的关键支点你有没有遇到过这样的场景&#xff1f;系统运行看似正常&#xff0c;但偶尔出现一次诡异的“误动作”——明明主备控制器输出一致&#xff0c;却触发了故障报警&#xff1b;又或…

作者头像 李华
网站建设 2026/4/25 8:02:12

E-Hentai智能下载神器:告别繁琐的漫画收藏革命

E-Hentai智能下载神器&#xff1a;告别繁琐的漫画收藏革命 【免费下载链接】E-Hentai-Downloader Download E-Hentai archive as zip file 项目地址: https://gitcode.com/gh_mirrors/eh/E-Hentai-Downloader 还在为一张张手动保存漫画图片而烦恼吗&#xff1f;传统方式…

作者头像 李华
网站建设 2026/5/1 7:34:27

无需激活码的真正神器:开源VibeThinker助力编程提效

无需激活码的真正神器&#xff1a;开源VibeThinker助力编程提效 在算法竞赛选手熬夜调试动态规划、学生面对LeetCode卡壳无解、偏远地区教师苦于缺乏优质教学资源的今天&#xff0c;一个仅15亿参数的小模型&#xff0c;正悄然改变AI辅助编程的格局。 它不是GPT-4那样的庞然大物…

作者头像 李华
网站建设 2026/4/26 22:19:13

LED显示屏尺寸大小如何决定控制卡数量:操作指南

如何根据LED显示屏尺寸科学配置控制卡数量&#xff1a;从原理到实战的完整指南你有没有遇到过这样的情况&#xff1f;明明选了“高端”控制卡&#xff0c;结果大屏一播放视频就开始闪烁、撕裂&#xff0c;甚至部分区域不亮。客户急&#xff0c;工程师更急——问题出在哪&#x…

作者头像 李华