news 2026/4/16 14:50:49

Tarjan算法图论全家桶系列--割边(桥)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Tarjan算法图论全家桶系列--割边(桥)

割边定义

在无向图G=(V,E)中,如果一条边e满足:删除e后,图的连通分量数量增加,则称e为割边(Bridge)。

重要性质

  • 割边一定是树边(在DFS生成树中的边)
  • 有重边(多重边)的边不可能是割边
  • 割边对应的两个端点中,至少有一个是割点(除非是悬挂边)

Tarjan算法求割边

1. 算法核心思想

Tarjan算法基于深度优先搜索(DFS),与求割点的算法类似,但判断条件有所不同。核心仍然是两个数组:

  • dfn[u]:节点u的DFS访问顺序(时间戳)
  • low[u]:从u出发,不经过DFS树中的父节点,能到达的最小dfn值

2. 判断割边的条件

对于一条树边(u, v)(其中u是v的父节点),如果满足:
low[v] > dfn[u]
那么(u, v)是一条割边。

解释

  • low[v]表示从v出发(不经过v→u这条边)能到达的最小时间戳
  • low[v] > dfn[u]意味着v及其后代无法通过任何非树边到达u或u的祖先
  • 因此,如果删除边(u, v),v所在的子图将与图的其余部分完全断开

模板

说明:Run(int _n,vector<int> adj[])传入总点数nvector<int>[]邻接表adj,运行tarjan求割边。vector<pair<int,int>> Get()获取所有割边

template<intN>structCut_edge{//不含重边constvector<int>*adj;vector<pair<int,int>>bridge;intdfn[N],low[N];intclk;voiddfs(intu,intfather){dfn[u]=low[u]=++clk;for(intto:adj[u]){if(to==father)continue;//不能走回父亲的边if(dfn[to]==0){dfs(to,u);low[u]=min(low[u],low[to]);if(low[to]>dfn[u])bridge.push_back({u,to});}elselow[u]=min(low[u],dfn[to]);}}voidRun(int_n,vector<int>adj[]){this->adj=adj;clk=0;bridge.clear();fill(dfn,dfn+5+_n,0);fill(low,low+5+_n,0);for(inti=1;i<=_n;++i)if(dfn[i]==0)dfs(i,-1);}vector<pair<int,int>>Get(){returnbridge;}};constintmaxn=2*1e5+20;Cut_edge<maxn>T;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:04:03

零基础入门智能体开发:你的第一个AI助手

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个新手友好的智能体教学工具&#xff0c;通过交互式教程引导用户创建基础智能体。功能包括&#xff1a;1. 智能体概念可视化解释&#xff1b;2. 拖拽式开发界面&#xff1b;3…

作者头像 李华
网站建设 2026/4/16 7:30:31

告别手动配置:对比传统与AI辅助Tomcat安装效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 请生成一个详细的Tomcat安装效率对比报告模板。要求&#xff1a;1) 设计传统手动安装的步骤清单和时间记录表&#xff1b;2) 设计AI辅助安装的步骤清单和时间记录表&#xff1b;3) …

作者头像 李华
网站建设 2026/4/16 7:22:40

5种Nacos认证方案原型速览

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个Nacos认证方案原型验证平台&#xff0c;支持&#xff1a;1. 多种认证方式快速切换 2. 实时base64编码生成 3. 连接测试功能 4. 性能对比图表 5. 导出最佳实践报告。要求使用…

作者头像 李华
网站建设 2026/4/15 22:36:09

如何用AI一键配置Conda清华源,提升开发效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Python脚本&#xff0c;自动检测当前系统环境&#xff0c;配置Conda使用清华镜像源。要求&#xff1a;1. 自动识别操作系统类型&#xff08;Windows/Linux/macOS&#xff0…

作者头像 李华
网站建设 2026/4/16 7:28:56

1小时搞定:用AI快速验证你的位置服务创意

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速生成一个位置服务原型&#xff0c;包含&#xff1a;1.地图基础展示&#xff1b;2.位置标记功能&#xff1b;3.简单的位置数据存储&#xff1b;4.基础UI界面。要求&#xff1a;1…

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

四轮电驱车辆稳定性控制的那些骚操作

四轮轮毂电机驱动车辆AFS和DYC/VTC的联合仿真搭建、控制。以四轮轮毂电机驱动车辆为控制对象&#xff0c;进行AFS/DYC的集成控制设计&#xff1a; &#xff08;1&#xff09;DYC设计&#xff0c;整体采用分层控制策略。 其中顶层控制器的任务是利用车辆状态信息、横摆角速度以及…

作者头像 李华