在圖論中,除了在有向圖中的強連通份量,在無向圖中還有一類雙連通份量html
雙連通份量通常是指點雙連通份量spa
固然,還有一種叫作邊雙連通份量code
對於一個連通圖,若是任意兩點至少存在兩條「點不重複」的路徑,則說圖是點雙連通的(即任意兩條邊都在一個簡單環中),點雙連通的極大子圖稱爲點雙連通份量。htm
計算方法比較簡單blog
在tarjan的過程當中,若是由\(i\) dfs到\(j\),而且\(low[j]>=dfn[i]\),那麼進行彈棧直到\(j\)被彈出,彈出的點加上\(i\)構成了一個點雙連通份量。
(實際就是在搜索樹種這個點和它下面的點構成了一個雙連通份量)get
注意在tarjan的過程當中,咱們能夠選擇存邊,也能夠存點,不過存點的話邊界條件要變一下class
do { h=s.top();s.pop(); #¥%……&*(() }while(h!=edge[i].v);//warning
(1) 若是一個點雙連通份量內的某些頂點在一個奇圈中(即雙連通份量含有奇圈),那麼這個雙連通份量的其餘頂點也在某個奇圈中;搜索
(2) 若是一個點雙連通份量含有奇圈,則他一定不是一個二分圖。反過來也成立,這是一個充要條件。方法
POJ 2942top
割點:對於無向圖中的點\(i\),若去掉\(i\)點,無向圖的連通快個數會增長,則稱點\(i\)爲割點
不難發現一個點是割點當且僅當他在多個點雙裏。
考慮以前求點雙的過程,找到一個點雙時,那個\(i\)就是一個割點。
根節點須要特判一下,必需要有至少\(2\)個孩子時纔是割點。