当前位置: 首页 > news >正文

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;
http://www.jsqmd.com/news/88288/

相关文章:

  • Flink SQL 模式识别用 MATCH_RECOGNIZE 把 CEP 写成 SQL
  • [编程杂谈]这题怎么这么难!!!(上)
  • Flink SQL Time Travel用 FOR SYSTEM_TIME AS OF 查询历史快照
  • AI:深度学习的前向传播和反向传播
  • 31、脚本编程进阶:Here文档、自上而下设计与流程控制
  • 基于SSM的高校大学生就业平台的设计与实现
  • vue基于Spring Boot框架的数字乡村旅游景点预约平台的设计与实现_ax346a6i
  • 计算机毕业设计springboot高考志愿智能推荐系统 基于SpringBoot的考后择校智慧匹配平台 面向新高考的SpringBoot个性化志愿辅助决策系统
  • AI:深度学习中反向传播中的链式法则和梯度
  • 英语_阅读_2019 Young Scientist Challenge_待读
  • 《Ascend C 进阶实战:高性能通用 Softmax 算子设计、数值稳定性与多轴支持》
  • 29、《pkg-config与GNU Autotools使用指南》
  • 计算机毕业设计springboot汽车智慧检修系统 基于SpringBoot的智能汽车故障预测与维修管理平台 融合IoT的SpringBoot车辆健康监测与维修决策系统
  • 蓝牙连接例程/蓝牙收发信号引出
  • 题目集 4~5 总结性 Blog
  • Java-TestNG——.xml文件的tests
  • 销售助手-推荐系统
  • 腾讯ACE误封禁
  • 兜兜英语每日短语:逃单篇
  • 【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列 - 教程
  • 基于微信小程序的驾校模拟考试系统的设计与实现 - 详解
  • 你写的不是代码,是生存的底气|从“制造思维”到“生长思维”的范式革命
  • Octo论文详解
  • 移动应用开发实验室大一上考核
  • DAY 8 打卡训练
  • 详细介绍:Java集合框架概述
  • 瑞萨推出M33内核WiFi6双频(2.4G+5G) + BLE蓝牙芯片RA6W2/W1,同时还将推出现成模组
  • 修改kubuntu下matlab2025b系统界面的大小
  • 基于SSM的高校大学生就业平台的设计与实现(开题报告)
  • 6、RSEI 生态环境质量智能评估系统 (GEE App)