在圖論中,除了在有向圖中的強連通分量,在無向圖中還有一類雙連通分量
雙連通分量一般是指點雙連通分量
當然,還有一種叫做邊雙連通分量
對於乙個連通圖,如果任意兩點至少存在兩條「點不重複」的路徑,則說圖是點雙連通的(即任意兩條邊都在乙個簡單環中),點雙連通的極大子圖稱為點雙連通分量。
計算方法比較簡單
在tarjan的過程中,如果由\(i\) dfs到\(j\),並且\(low[j]>=dfn[i]\),那麼進行彈棧直到\(j\)被彈出,彈出的點加上\(i\)構成了乙個點雙連通分量。
(實際就是在搜尋樹種這個點和它下面的點構成了乙個雙連通分量)
注意在tarjan的過程中,我們可以選擇存邊,也可以存點,不過存點的話邊界條件要變一下
do
while(h!=edge[i].v);//warning
(1) 如果乙個點雙連通分量內的某些頂點在乙個奇圈中(即雙連通分量含有奇圈),那麼這個雙連通分量的其他頂點也在某個奇圈中;
(2) 如果乙個點雙連通分量含有奇圈,則他必定不是乙個二分圖。反過來也成立,這是乙個充要條件。
poj 2942
題解割點:對於無向圖中的點\(i\),若去掉\(i\)點,無向圖的連通快個數會增加,則稱點\(i\)為割點
不難發現乙個點是割點當且僅當他在多個點雙里。
考慮之前求點雙的過程,找到乙個點雙時,那個\(i\)就是乙個割點。
根節點需要特判一下,必須要有至少\(2\)個孩子時才是割點。
洛谷p3388
題解
點雙連通分量與割點
在圖論中,除了在有向圖中的強連通分量,在無向圖中還有一類雙連通分量 雙連通分量一般是指點雙連通分量 當然,還有一種叫做邊雙連通分量 對於乙個連通圖,如果任意兩點至少存在兩條 點不重複 的路徑,則說圖是點雙連通的 即任意兩條邊都在乙個簡單環中 點雙連通的極大子圖稱為點雙連通分量。計算方法比較簡單 在t...
割點,橋,點 邊雙連通分量模版
根結點為割點當其有至少2個兒子 非根結點u為割點當存在子結點v的low v dfn u 在dfs樹中,v是u的兒子,邊 u,v 為橋當low v dfn u struct e edge maxm int head maxn tol inline void addedge int u,int v in...
點連通分量 邊連通分量 割點和橋 強連通分量
老是搞不清他們的關係,不知道該用那份 今天理了一下,整理一下模板 點連通分量 可以求出點連通分量包含哪些點,那個點屬於那個連通分量 struct edge int pre maxn iscut maxn bccno maxn dfs clock,bcc cnt vectorg maxn bcc ma...