(1)求割点和桥的方法是tarjan算法,刘汝佳训练指南p314。
【割点】可以将两个【点双连通分量】隔开来,因为仅一个【点双连通分量】中肯定无割点,那么每两个点对都同时处于若干个简单环中才能当一个点撤掉仍然可以互通。
【桥】可以将两个【边双连通分量】隔开来,因为仅仅一个【边双连通分量】中肯定无桥,那么每两个点对之间肯定有2条以上的路径可达(可以经过同1个点),当任意1条边撤掉后每两个点对仍然可达。
(2)要使一个连通图变成【边双连通图】,可以使用tarjian算法求出桥,每条桥隔开两个【边双连通分量】,将【边双连通分量】缩点,变成树,而桥就是树边。缩点后的树中所有度为1的节点都需要互连,应该加上的边数= (叶子节点数+1)/2。这是因为如果叶子数为偶数,可以互缠(即左边缠右边),叶子顺序1234可以1-3,2-4。如果叶子数为奇数就先扣掉1个,然后互缠,再将扣掉的叶子加到里面去。