双联通分量
- 边双,对于任意两个点存在至少两条边不同的路径
- 点双,对于任意两个点存在至少两条点不同的路径
性质
- 显然如果是点双就一定是边双
求法
边双有很好的求法,根据定义如果此边为割边(dfn[v]>low[u])(即u点儿子v无法到达u,此边为割边),那么一定不是边双,直接将割边去掉,剩下的联通快即为边双
点双,同样运用到Tarjan算法,注意每次遍历一条边便将其压如栈中,如果该边为割点(low[v]>=dfn[u]),则像强连通那样一直弹边,将每条边的点标记,要注意,每个点都可能属于多个点双之中,每次覆盖成最新编号即可。一直弹到此边上一次出现即可
此类问题写Tarjan时因为是双向边,所以要记一下父亲,不然要死循环在里面