P1656 炸铁路【洛谷算法习题】

发布时间:2026/10/27 7:05:02

P1656 炸铁路【洛谷算法习题】 P1656 炸铁路网页链接P1656 炸铁路题目描述A 国派出将军 uim对 B 国进行战略性措施以解救涂炭的生灵。B 国有n nn个城市这些城市以铁路相连。任意两个城市都可以通过铁路直接或者间接到达。uim 发现有些铁路被毁坏之后某两个城市无法互相通过铁路到达。这样的铁路就被称为 key road。uim 为了尽快使该国的物流系统瘫痪希望炸毁铁路以达到存在某两个城市无法互相通过铁路到达的效果。然而只有一发炮弹A 国国会不给钱了。所以他能轰炸哪一条铁路呢输入格式第一行n , m ( 1 ≤ n ≤ 150 n,m\ (1 \leq n\leq 150n,m(1≤n≤1501 ≤ m ≤ 5000 ) 1 \leq m \leq 5000)1≤m≤5000)分别表示有n nn个城市总共m mm条铁路。以下m mm行每行两个整数a , b a, ba,b表示城市a aa和城市b bb之间有铁路直接连接。保证不存在重边a , b a, ba,b和b , a b, ab,a也视为重边。输出格式输出有若干行。每行包含两个数字a , b a,ba,b其中a b abab表示⟨ a , b ⟩ \lang a,b\rang⟨a,b⟩是 key road。请注意输出时所有的数对⟨ a , b ⟩ \lang a,b\rang⟨a,b⟩必须按照a aa从小到大排序输出如果a aa相同则根据b bb从小到大排序。输入输出样例 #1输入 #16 6 1 2 2 3 2 4 3 5 4 5 5 6输出 #11 2 5 6解题思路本题是图论中的桥割边判定问题要求找出给定无向连通图中哪些边在删除后会使图不再连通即“key road”。由于数据规模较小n ≤ 150 n \le 150n≤150m ≤ 5000 m \le 5000m≤5000可以采用暴力枚举每条边删除该边后用并查集判断剩余图是否连通的方法来求解。1. 问题等价转化桥的定义在无向连通图中若删除某条边后图不再连通则该边称为桥或割边、key road。目标输出图中所有桥。输出顺序需满足每一对( a , b ) (a,b)(a,b)中a b abab所有数对按a aa升序排列若a aa相同则按b bb升序排列。2. 算法实现输入与预处理读入n nn和m mm。对每条边( u , v ) (u,v)(u,v)若u v uvuv则交换确保a b abab的形式。将所有边按u uu升序、若u uu相同按v vv升序排序。排序后按顺序枚举删除边输出的桥自然满足题目要求的顺序。枚举每条边并判断是否为桥对于排序后的第i ii条边将其“删除”即不加入到并查集中。初始化并查集将除第i ii条边外的所有边加入并查集。检查所有节点是否属于同一个集合即图是否连通。可以选择节点1 11作为基准遍历2 ∼ n 2 \sim n2∼n若存在节点与节点1 11不在同一集合则说明图不连通当前删除的边是桥。若为桥输出该边。输出结果因为枚举顺序已经排序直接输出即可。3. 复杂度分析时间复杂度枚举m mm条边每次枚举需重新构建并查集并处理其余m − 1 m-1m−1条边并查集操作近似O ( α ( n ) ) O(\alpha(n))O(α(n))。总复杂度O ( m × ( m ⋅ α ( n ) ) ) ≈ O ( m 2 α ( n ) ) O(m \times (m \cdot \alpha(n))) \approx O(m^2 \alpha(n))O(m×(m⋅α(n)))≈O(m2α(n))。m ≤ 5000 m \le 5000m≤5000计算量约2.5 × 10 7 2.5\times 10^72.5×107次并查集操作在时间限制内可行。空间复杂度O ( n m ) O(n m)O(nm)存储边和并查集数组。总结本题数据范围允许暴力枚举每一条边通过并查集检查删除该边后图是否连通来判断是否为桥。排序后枚举保证了输出顺序。算法简单直观适用于小规模图。代码简要说明结构体edge存储边的两个端点u , v u,vu,v。排序函数cmp先按u uu升序再按v vv升序。并查集操作fd(x)路径压缩查找根节点。un(x,y)合并两个节点所在集合。主流程读入边并标准化保证u v uvuv。对边排序。枚举第i ii条边构建不包含该边的并查集。检查节点1 11与其他节点是否连通若不连通则输出该边。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;structedge{ll u,v;}e[5005];ll fa[155];ll n,m;boolcmp(constedgex,constedgey){if(x.uy.u)returnx.vy.v;returnx.uy.u;}llfd(ll x){if(fa[x]x)returnx;returnfa[x]fd(fa[x]);}voidun(ll x,ll y){ll rxfd(x),ryfd(y);fa[ry]rx;}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cinnm;for(ll i1;im;i){cine[i].ue[i].v;if(e[i].ve[i].u)swap(e[i].u,e[i].v);}sort(e1,em1,cmp);for(ll i1;im;i){for(ll j1;jn;j)fa[j]j;for(ll j1;jm;j)if(j!i)un(e[j].u,e[j].v);for(ll j2;jn;j)if(fd(j)!fd(j-1)){coute[i].u e[i].vendl;break;}}return0;}
延伸阅读

更多相关文章

2026/10/27 14:50:24

三极管基极-发射极并联电阻的作用、取值与电路设计详解

做硬件开发的朋友,不管是在校学生还是工作几年的工程师,大概率在面试中都遇到过这样一道题: “为什么 NPN 三极管的基极和发射极之间要并联一个电阻?” 第一次看到题目时,很多人会愣一下。教材里画三极管开关电路&am…

2026/10/27 12:51:29

共集电极放大电路完整分析:从静态工作点到仿真实战

分享一套三极管共集电极放大电路的完整分析笔记,从电路结构、静态工作点计算到动态指标推导,再到 Multisim 仿真与实测注意事项,一次讲清楚。无论是准备模电考试,还是在实际项目中用射极跟随器做阻抗变换、缓冲隔离,这…

2026/10/25 16:32:46

测试工程师校招笔试复盘:从等价类到AI测试的备考指南

2018年秋招那阵子,爱奇艺测试工程师的第一场笔试出来后,备考群里的讨论一下子炸了。题目本身不算偏,但很多人栽在同一个地方:用刷算法题的心态去答测试题,结果在等价类、边界值、测试用例设计这些“送分题”上丢了大分…

2026/10/27 14:47:53

Sentaurus半导体器件仿真全流程:I-V/C-V/瞬态/辐照五模块标准化方案

简介:本资源是一份面向微电子器件仿真初学者与工程实践者的Sentaurus软件应用指南,聚焦I-V/C-V特性提取、辐照损伤建模、重粒子入射瞬态响应及激光激励等关键场景,助力用户掌握半导体器件多物理场协同仿真的核心流程。文档以结构化命令脚本与…

2026/10/27 14:47:53

Java算法实战:五子棋中的数据结构与优化技巧

1. Java基础算法与五子棋的关联思考五子棋这个看似简单的棋盘游戏,背后隐藏着许多值得玩味的算法思想。作为Java开发者,我们往往把注意力放在框架和分布式架构上,却忽略了这些基础算法在日常开发中的实际应用价值。我在面试应届生时发现&…

2026/10/27 14:47:53

PyTorch导出ONNX的GPU适配陷阱与避坑指南

1. 项目概述:为什么这篇PaperSpace博客翻译值得花时间精读 “PaperSpace 博客中文翻译(五十九)”这个标题看似平淡,实则藏着一个被大量初学者和工程落地者反复踩坑却鲜少被系统梳理的关键断层—— PyTorch模型导出ONNX过程中的隐…

2026/10/27 14:47:53

Vue集成Lottie动画:原理、优化与企业级实践

1. 为什么要在Vue中集成Lottie动画?Lottie作为Airbnb开源的动画解决方案,已经成为现代Web开发中处理复杂动画的首选工具。我在多个Vue项目中实践发现,相比传统的CSS或GIF动画,Lottie通过解析Adobe After Effects导出的JSON文件&am…

2026/10/27 14:47:53

学术写作AI检测与降AI率方案全解析

1. 学术写作中的AI检测现状解析2026届学术党正面临前所未有的挑战——全球高校纷纷升级AI检测系统,Turnitin、iThenticate等平台已能识别ChatGPT等工具生成的文本特征。去年某常春藤院校的抽查数据显示,使用AI辅助写作的论文被标记率高达37%,…

2026/10/27 14:42:36

粒子群优化在工业曲面匹配中的应用与实现

1. 项目概述:当粒子群遇上曲面匹配 十年前我第一次接触工业检测项目时,遇到一个棘手问题:如何将理论上的完美曲面模型与生产线上的实际产品进行高精度匹配。传统ICP算法在复杂曲率变化区域频频失效,正是这个痛点催生了我们对粒子群…

2026/10/27 14:24:03

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/27 9:34:54

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑