news 2026/5/1 5:13:42

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/26 9:43:17

力扣刷题:最长公共子序列

题目&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&a…

作者头像 李华
网站建设 2026/4/25 13:37:25

电商客服升级:用LangChain+MCP打造智能问答系统

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个电商智能客服系统&#xff0c;要求&#xff1a;1. 集成商品数据库和FAQ知识库 2. 使用MCP协议动态选择问答模型&#xff08;常规问题用小型模型&#xff0c;复杂问题用GPT-…

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

7、OS X 文件系统路径与目录操作全解析

OS X 文件系统路径与目录操作全解析 1. 文件路径名基础 在 OS X 系统中,要指定文件或目录的位置,需使用路径名。路径名本质上是文件系统中目录或文件的地址。在基础的 OS X 系统里,文件系统中的所有文件都存储在连接到计算机的磁盘上。同时,OS X 还支持通过网络文件系统访…

作者头像 李华
网站建设 2026/4/26 9:17:58

AI如何自动解决Gradle JVM版本不兼容问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个智能Gradle版本兼容性检查工具&#xff0c;能够自动扫描项目中的Gradle版本和JVM版本配置&#xff0c;检测不兼容问题。当发现This project is configured to use an older…

作者头像 李华
网站建设 2026/4/23 9:51:36

传统VS AI:小说网站开发效率提升300%的秘密

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个完整的小说网站前后端代码&#xff0c;包含&#xff1a;1.响应式前端界面 2.RESTful API接口 3.用户认证系统 4.小说分类和搜索功能 5.作者后台管理系统。使用Vue.jsNode.j…

作者头像 李华
网站建设 2026/4/8 5:35:11

CUDA vs cuDNN:深度学习开发效率提升指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个Jupyter Notebook包含&#xff1a;1) 矩阵乘法基准测试&#xff08;纯CUDA实现 vs cuDNN实现&#xff09; 2) 卷积神经网络各层耗时占比饼图 3) 内存占用对比仪表盘。要求自…

作者头像 李华