前言 在圖論中,除了在有向圖中的強連通分量,在無向圖中還有一類雙連通分量 雙連通分量一般是指 點雙連通分量 當然,還有一種叫做 邊雙連通分量 點雙連通分量 對於一個連通圖,如果任意兩點至少存在兩條“點不重覆”的路徑,則說圖是點雙連通的(即任意兩條邊都在一個簡單環中),點雙連通的極大子圖稱為點雙連通分 ...
前言
在圖論中,除了在有向圖中的強連通分量,在無向圖中還有一類雙連通分量
雙連通分量一般是指點雙連通分量
當然,還有一種叫做邊雙連通分量
點雙連通分量
對於一個連通圖,如果任意兩點至少存在兩條“點不重覆”的路徑,則說圖是點雙連通的(即任意兩條邊都在一個簡單環中),點雙連通的極大子圖稱為點雙連通分量。
計算方法比較簡單
在tarjan的過程中,如果由\(i\) dfs到\(j\),並且\(low[j]>=dfn[i]\),那麼進行彈棧直到\(j\)被彈出,彈出的點加上\(i\)構成了一個點雙連通分量。
(實際就是在搜索樹種這個點和它下麵的點構成了一個雙連通分量)
註意在tarjan的過程中,我們可以選擇存邊,也可以存點,不過存點的話邊界條件要變一下
do
{
h=s.top();s.pop();
#¥%……&*(()
}while(h!=edge[i].v);//warning
與二分圖的關係
(1) 如果一個點雙連通分量內的某些頂點在一個奇圈中(即雙連通分量含有奇圈),那麼這個雙連通分量的其他頂點也在某個奇圈中;
(2) 如果一個點雙連通分量含有奇圈,則他必定不是一個二分圖。反過來也成立,這是一個充要條件。
例題
割點(割頂)
割點:對於無向圖中的點\(i\),若去掉\(i\)點,無向圖的連通快個數會增加,則稱點\(i\)為割點
不難發現一個點是割點當且僅當他在多個點雙里。
考慮之前求點雙的過程,找到一個點雙時,那個\(i\)就是一個割點。
根節點需要特判一下,必須要有至少\(2\)個孩子時才是割點。