定义
强连通分量:图中极大的任意两个结点连通的子图。
点双连通分量:对于一个无向图,假如仅仅对于该图而言其中不包含割点,那么称这个图是点双连通的。对于一个无向图中的极大点双连通的子图,我们称这个子图为点双连通分量。
边双连通分量:假如删去这条边后图不连通,那么称这条边为割边。对于一个图,假如仅仅对于该图而言其中没有割边,那么我们称这个图是边双联通的。对于一个无向图中的极大边双连通的子图,我们称这个子图为边双连通分量。
割点:对于一个连通图中的点,假如删去这个点以及与其相连的所有边之后图不连通,那么称该点为该图的割点。
写法
写法 | 强连通分量 | 点双连通分量 | 边双连通分量 | 割点 |
---|---|---|---|---|
是否用栈 | 是 | 是 | 否 | 否 |
是否判断在栈内 | 是 | 否 | 否 | 否 |
是否记录从何转移 | 否 | 是 | 是 | 否 |
以何种性质记录转移 | 无 | 点 | 边 | 无 |
判定方法 | 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) |