news 2026/2/4 15:26:47

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/2/3 5:20:09

AI如何解决Python绘图中的‘tostring_rgb‘属性错误

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个Python代码示例&#xff0c;演示如何正确使用matplotlib的FigureCanvasAgg类将图形转换为RGB字符串。代码应包含错误处理&#xff0c;当遇到tostring_rgb属性缺失时&#x…

作者头像 李华
网站建设 2026/2/1 9:30:09

VPS vs 传统服务器:效率对比与成本分析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个对比分析工具&#xff0c;输入用户的预期流量、应用类型和预算&#xff0c;自动生成VPS和传统服务器的详细对比报告&#xff08;包括性能测试数据、成本计算、运维复杂度等…

作者头像 李华
网站建设 2026/1/29 15:13:31

1、解锁 Mac 上 Unix 的强大功能

解锁 Mac 上 Unix 的强大功能 1. Mac OS X 与 Unix 的渊源 十五年前,苹果从 Mac OS 9 升级到 Mac OS X,Mac 系统的使用体验发生了巨大变化。这次升级的最大亮点是让每台机器都具备了多任务和多用户功能。在 OS X 光鲜亮丽的图形界面之下,运行着 Unix 操作系统,具体来说是…

作者头像 李华
网站建设 2026/2/4 15:17:32

企业级TLS证书管理实战:解决未知CA问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个企业级TLS证书管理演示应用&#xff0c;模拟以下场景&#xff1a;1) 内部私有CA颁发的证书 2) 跨部门服务调用时的证书验证失败 3) 解决方案实施过程。应用应包含&#xff…

作者头像 李华
网站建设 2026/2/2 8:22:56

企业级Python环境搭建:Conda清华源最佳实践

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业级Conda源管理工具&#xff0c;功能包括&#xff1a;1. 支持多版本conda环境管理 2. 允许自定义内部镜像源&#xff08;包括清华源&#xff09;3. 提供批量部署功能 4.…

作者头像 李华