Taijin
1|0定义
1|1无向图
给定无向连通图 。
若对于 ,从图中删去节点 以及所有与 相连的边之后, 分裂成两个或以上不相连的子图,则称 为 的割点。
若对于 ,从图中边 之后, 分裂成两个不相连的子图,则称 为 的桥或割边。
没有割点的无向连通图称为“点双连通图”。没有桥的无向连通图称为“边双连通图”。
无向图的极大点双连通子图被称为“点双连通分量”(v-DCC),无向图的极大边双连通子图被称为“边双连通分量”(e-DCC)。二者统称为“双连通分量”(DCC)。
表示 的 dfs 序。
表示 的子树中只经过一条边所到达的节点 的最小值。
1|2有向图
2|0Tarjin 算法
2|1求强连通分量
当 时弹栈。
缩完点后是 DAG(有向无环图)。
2|2求割点
为割点的充要条件是:
- 若 不为搜索树的根节点,存在 的一个子节点 ,满足
- 若 为搜索树的根节点,存在至少 个 的子节点满足上述条件
2|3求桥
无向边 是桥的充要条件是搜索树上存在 的一个子节点 满足 。
2|4求点双连通分量
- 当一个节点第一次访问时,把它入栈。
- 当存在 的子节点 满足 ,无论下 是否为根,弹出栈内节点直到 被弹出,刚才弹出的所有结点和 构成的 v-DCC。
缩完点后可以构造出圆方树。
2|5求边双连通分量
两种方法:
(1)把所有桥删去,跑连通块。
(2)每次把当前节点入栈。遍历完 后,若 ,弹出栈内元素直到 被弹出,刚才弹出的所有结点构成一个 e-DCC。
缩完点后是一个树。
3|0易错点
-
求 e-DCC 时不用判重边自环,但要判断父节点的反边。求 v-DCC 时要判自环,否则判孤立点时会出问题(似乎可以在判孤立点时判断,但输入时判断更简便),不用判重边和父节点。
-
求 v-DCC 时满足 时即可输出点双联通分量。求割点时当 为根节点时,至少要有 个 满足条件。
-
多测时清空 数组。
-
求删去一个点后会多出几个连通块时,答案不是这个点是否时割点,而是这个点被多少个 v-DCC 所包含(再减一)。
__EOF__

本文作者:louisliang
本文链接:https://www.cnblogs.com/louisliang/articles/17943614.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/louisliang/articles/17943614.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构