news 2026/6/10 16:03:25

信奥赛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/6/10 13:06:54

BBDown:重新定义B站视频下载体验

BBDown&#xff1a;重新定义B站视频下载体验 【免费下载链接】BBDown Bilibili Downloader. 一款命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 在信息爆炸的时代&#xff0c;我们每天都会遇到想要保存的精彩视频内容。无论是学习教程、…

作者头像 李华
网站建设 2026/6/10 13:07:11

多步逻辑推导能力强:解决需要链式思维的数学题

VibeThinker-1.5B&#xff1a;小模型如何实现高强度链式推理 在当前大模型“军备竞赛”愈演愈烈的背景下&#xff0c;参数规模动辄数百亿、千亿&#xff0c;训练成本直逼数百万美元。然而&#xff0c;一个令人深思的现象正在浮现&#xff1a;并非所有高难度任务都必须依赖“巨…

作者头像 李华
网站建设 2026/6/10 15:24:12

CSDN博客排版差?VibeThinker输出Markdown规范格式

VibeThinker-1.5B&#xff1a;小模型如何颠覆技术写作与算法推理 在CSDN、知乎或掘金上浏览技术博客时&#xff0c;你是否曾被混乱的标题层级、错位的代码块和无法渲染的数学公式劝退&#xff1f;排版问题早已成为开发者内容创作的一大痛点。更讽刺的是&#xff0c;我们手握强…

作者头像 李华
网站建设 2026/6/10 14:33:02

Dify Excel兼容性问题一网打尽(90%用户不知道的格式陷阱)

第一章&#xff1a;Dify Excel兼容性问题一网打尽&#xff08;90%用户不知道的格式陷阱&#xff09;在使用 Dify 处理 Excel 文件时&#xff0c;许多用户会遇到看似简单却难以排查的兼容性问题。这些问题通常源于 Excel 文件的隐式格式设定与 Dify 数据解析引擎之间的不匹配&am…

作者头像 李华
网站建设 2026/6/10 13:55:03

IDEA阅读插件终极指南:在代码编辑器中轻松阅读电子书

IDEA阅读插件终极指南&#xff1a;在代码编辑器中轻松阅读电子书 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 还在寻找工作时偷偷阅读电子书的完美解决方案吗&#xff1f;IDEA阅读插件正…

作者头像 李华