Tarjan入门笔记
有向图的强连通分量
联通分量的定义:分量中任意两点,u,v。必然可以从u走到v,从v走到u。
强连通分量定义:极大联通分量(任何一个联通分量加上一个点之后都不是一个联通分量了。)
作用:将有向图缩点成为一个有向无环图。(DAG)(拓扑图)
dfs序搜索的时候几个概念
1,树枝边
2,前向边(特殊的树枝边)
3,后向边
4,横叉边
dfn[u]:u的时间戳是多少。
low[u]:从u开始走所能遍历到的最小时间戳。
无向图的强连通分量
1,边双联通分量:极大的不包含桥的联通块。
2,点双联通分量:极大的不包含割点的双联通分量。
如何判桥?
我们遍历点的时候,如果这个节点的最早时间戳严格小于自己父亲节点的low[u]那么这条树枝边就是桥。
如何找到边双联通分量?
1,把所有的桥删掉。
2,使用栈,类似有向图的遍历,当我们节点还存在栈 中的时候就代表他属于这个边双联通分量。
相关结论:
有向图变成强连通分量需要加max(p,q)条边,p,q是缩点后的起点个数和终点个数
无向图变成边双联通分量需要添加
(
c
n
t
+
1
/
2
)
(cnt+1/2)
(cnt+1/2)向下取证,cnt是叶子节点的个数。
持续更新。。。。。