1.边双连通分量
定义:极大的不包含桥的连通块,极大就是不存在包含它且比它多的边连通分量
一条边被叫做桥表示删去该边后原图便不再连通。
桥不属于任何一个边双连通分量,其余的边和每个顶点都属于且只属于一个边双连通分量
桥也被称为割边
2.点双连通分量
定义:极大的不包含割点的连通块,同上
割点表示删除该点后原图就不再连通。
每一个割点至少属于两个连通分量。
两个割点之间的边不一定是桥。
一座桥的两个端点不一定是割点 。
割点的判断:
如果当前的缩点后的树有一个点x是y的父节点的话,可以判定x是割点有以下两种方式
在low[y]>=df[x]的前提下,y无论如何也不能通过一个环走到x上面的点,说明y与x上面的点必须要经过x这个节点才能相互连通。
1.如果x不是根节点的话,那么x一定是一个割点。
2.相当于1的一个特判,如果x是根节点的话,那么x必须有至少两个子节点才能判断是割点,在只有y一个子树的情况下,删除了x后,剩下一个y依旧算是连通的。
求点的双连通分量
桥的判定。
按深搜顺序从 x--y有一条边,如果有dfn(x)<low(y),说明,y不可能走回x,说明该边是桥。
求边的双连通分量
1.删除所有桥后剩下的每一个连通块都是边的双连通分量
2.像求有向图的强连通分量一样用一个栈去做,当一个点x的dfn[x]==low[x],说明x与其父节点之间的边就是一条桥,x的所有还在栈中的子树加上x就是一个边的双连通分量。