點雙連通分量與割點

2022-10-11 03:30:08 字數 665 閱讀 3228

在圖論中,除了在有向圖中的強連通分量,在無向圖中還有一類雙連通分量

雙連通分量一般是指點雙連通分量

當然,還有一種叫做邊雙連通分量

對於乙個連通圖,如果任意兩點至少存在兩條「點不重複」的路徑,則說圖是點雙連通的(即任意兩條邊都在乙個簡單環中),點雙連通的極大子圖稱為點雙連通分量。

計算方法比較簡單

在tarjan的過程中,如果由i dfs到j,並且low[j]>=dfn[i],那麼進行彈棧直到j被彈出,彈出的點加上i構成了乙個點雙連通分量。

(實際就是在搜尋樹種這個點和它下面的點構成了乙個雙連通分量)

注意在tarjan的過程中,我們可以選擇存邊,也可以存點,不過存點的話邊界條件要變一下

dowhile(h!=edge[i].v);//warning

(1) 如果乙個點雙連通分量內的某些頂點在乙個奇圈中(即雙連通分量含有奇圈),那麼這個雙連通分量的其他頂點也在某個奇圈中;

(2) 如果乙個點雙連通分量含有奇圈,則他必定不是乙個二分圖。反過來也成立,這是乙個充要條件。

割點:對於無向圖中的點i,若去掉i點,無向圖的連通快個數會增加,則稱點i為割點

不難發現乙個點是割點當且僅當他在多個點雙里。

考慮之前求點雙的過程,找到乙個點雙時,那個i就是乙個割點。

根節點需要特判一下,必須要有至少2個孩子時才是割點。

點雙連通分量與割點

在圖論中,除了在有向圖中的強連通分量,在無向圖中還有一類雙連通分量 雙連通分量一般是指點雙連通分量 當然,還有一種叫做邊雙連通分量 對於乙個連通圖,如果任意兩點至少存在兩條 點不重複 的路徑,則說圖是點雙連通的 即任意兩條邊都在乙個簡單環中 點雙連通的極大子圖稱為點雙連通分量。計算方法比較簡單 在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...