Tarjan

发布时间 2023-06-04 22:33:18作者: TKXZ133

定义

强连通分量:图中极大的任意两个结点连通的子图。

点双连通分量:对于一个无向图,假如仅仅对于该图而言其中不包含割点,那么称这个图是点双连通的。对于一个无向图中的极大点双连通的子图,我们称这个子图为点双连通分量。

边双连通分量:假如删去这条边后图不连通,那么称这条边为割边。对于一个图,假如仅仅对于该图而言其中没有割边,那么我们称这个图是边双联通的。对于一个无向图中的极大边双连通的子图,我们称这个子图为边双连通分量。

割点:对于一个连通图中的点,假如删去这个点以及与其相连的所有边之后图不连通,那么称该点为该图的割点。

写法

写法 强连通分量 点双连通分量 边双连通分量 割点
是否用栈
是否判断在栈内
是否记录从何转移
以何种性质记录转移
判定方法 dfn[s]==low[s] low[v]>=dfn[s]!from&&!child low[v]>dfn[s] s!=fa&&low[v]>=dfn[s]s==fa&&child>=2
弹栈时该点是否出栈
执行方法 遍历出点后判定,将其中的所有点出栈 遍历出点时判定,将其中所有除了自己的点出栈 遍历出点时判定割边,tarjan 完毕后全图 dfs 遍历出点时判定
是否适用于无向图
初值传参 tarjan(i) tarjan(i,0) tarjan(i,-1) tarjan(i,i)