news 2026/8/7 23:24:13

Tarjan全家桶系列--割点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Tarjan全家桶系列--割点

割点定义

在无向图G=(V,E)中,如果一个节点u满足:删除u以及与u相关联的所有边后,图的连通分量数量增加,则称u为割点

核心思想

Tarjan算法仍然基于深度优先搜索(DFS),利用两个关键数组:

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

判断割点的条件

对于一个节点u,有两种情况是割点:

情况1:u不是DFS树的根节点

如果存在u的一个子节点v,满足low[v] >= dfn[u],那么u是割点。

解释:这意味着从v出发,在不经过u的情况下,无法到达u的祖先节点。移除u后,v及其后代将与图的其余部分断开。

情况2:u是DFS树的根节点

如果u有两个或更多个子树(在DFS树中),那么u是割点。

解释:作为根节点,每个子树之间没有连接(除了通过根节点)。移除根节点后,这些子树将互相断开。

模板

说明:Run(int _n,const vector<int>adj[])传入总点数nvector<int>[]邻接表,运行tarjan求割点
vector<bool> Get()获取cut[]数组,cut[i]==truei点是割点

template<intN>structCut_vertex{vector<bool>cut;//cut[i]==true,i是割点intdfn[N],low[N];constvector<int>*adj;intn,clk,root;voiddfs_t(intu){dfn[u]=low[u]=++clk;intcnt=0;//DFS树的u子树中,去掉u能新增的连通块数for(intto:adj[u]){if(dfn[to]==0){dfs_t(to);low[u]=min(low[u],low[to]);if(low[to]>=dfn[u])++cnt;}elselow[u]=min(low[u],dfn[to]);}if((u!=root&&cnt>=1)||cnt>=2)cut[u]=true;elsecut[u]=false;}voidRun(int_n,constvector<int>adj[]){n=_n;clk=0;cut.assign(n+3,false);fill(low,low+3+n,0);fill(dfn,dfn+3+n,0);this->adj=adj;for(inti=1;i<=n;++i)if(dfn[i]==0){root=i,dfs_t(i);}}vector<bool>Get(){returncut;}};constintmaxn=2*1e5+20;Cut_vertex<maxn>T;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 16:06:36

31、脚本编程进阶:Here文档、自上而下设计与流程控制

脚本编程进阶:Here文档、自上而下设计与流程控制 1. Here文档的使用 在文本输出方面,除了使用 echo 命令的两种方法外,还可以使用Here文档(Here Document)或Here脚本。Here文档是一种I/O重定向的额外形式,它允许我们将一段文本嵌入脚本,并将其作为命令的标准输入。其…

作者头像 李华
网站建设 2026/8/7 23:39:18

信捷XDH系列PLC的追剪/飞剪/电子凸轮程序模板

信捷XDH系列PLC追剪/飞剪/电子凸轮程序模板 包含了定长追剪和飞剪模式/定标飞剪/追剪模式 函数功能块无jia密&#xff0c;是学习信捷追/飞剪的经典模板 适合参考借鉴 包含&#xff1a;PLC程序信捷触摸屏HMI软元件分配表最近在搞PLC运动控制的朋友应该对信捷XDH系列不陌生&#…

作者头像 李华
网站建设 2026/8/7 7:30:07

【大模型】-LangChain--stream流式同步异步

文章目录1.同步stream流2.异步astream流3.异步astream流json输出4.异步事件astream_events流5.异步多线程1.同步stream流 import os from langchain_community.chat_models import ChatTongyios.environ["DASHSCOPE_API_KEY"] "sk-秘钥" llm ChatTongyi…

作者头像 李华
网站建设 2026/8/7 9:33:23

兜兜英语每日短语:逃单篇

1. &#x1f37d;️&#x1f4a8; dine and dash&#xff08;吃霸王餐 / 吃完就跑&#xff09; 英文&#xff1a;Nine diners in Chongqing dined and dashed, leaving one person behind. 中文&#xff1a;重庆 9 名食客吃霸王餐后逃单&#xff0c;只留下一人 “背锅”&#x…

作者头像 李华
网站建设 2026/8/7 0:07:02

计算机毕业设计springboot汽车智慧检修系统 基于SpringBoot的智能汽车故障预测与维修管理平台 融合IoT的SpringBoot车辆健康监测与维修决策系统

计算机毕业设计springboot汽车智慧检修系统a93520rj &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 当汽车从“机械”进化为“数据孤岛”&#xff0c;每一次打火、每一脚刹车都…

作者头像 李华
网站建设 2026/8/6 21:31:27

python3

import osdef traverse_files(path):# 遍历当前路径下的所有文件和文件夹for item in os.listdir(path):# 拼接完整路径item_path os.path.join(path, item)if os.path.isfile(item_path):# 是文件则输出路径print("文件:", item_path)elif os.path.isdir(item_path…

作者头像 李华