[模板] tarjan/联通分量/dfs树
Posted ubospica
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模板] tarjan/联通分量/dfs树相关的知识,希望对你有一定的参考价值。
边的分类
有向图边分为四类: 树边, 前向边, 返祖边(后向边), 横叉边.
上图:
判定
有向图
对图进行dfs, 不考虑已经遍历过的点, 得到dfs序 (dfn_i).
在dfs过程中, 记录当前dfs栈. 对于边((u,v)),
- 树边: (vis_v==0);
- 前向边: (vis_v==1) 且 (dfn_v > dfn_u);
- 返祖边: (vis_v==1) 且 (dfn_v < dfn_u), 且 (v) 在当前栈内;
- 横叉边: (vis_v==1) 且 (dfn_v < dfn_u), 且 (v) 不在当前栈内.
无向图
边仅分为树边和返祖边, 通过 (vis) 判断即可.
以上是关于[模板] tarjan/联通分量/dfs树的主要内容,如果未能解决你的问题,请参考以下文章
机器学习实战应用案例100篇(二十五)-强联通分量算法应用案例