雙連通分量

2021-07-29 21:31:49 字數 1280 閱讀 5536

無向圖的雙連通分量跟有向圖的連通分量有點像。

先說說一些定義。

時間戳:以某個點vi

為起點,dfs到的其他點vj

的時間。通常用pre表示

連通圖:每兩個點間都有路徑存在的無向圖就叫連通圖。

割頂(cut vertex):也叫割點。在某個連通圖

g 中,若去掉某個點

i,該圖

g 無法保持所有點連通,那這個點就是割頂。

橋(bridge):類似的,在某個連通圖

g中,若去掉某個邊

e ,該圖

g無法保持所有點連通,那這個邊就叫橋。

若乙個無向圖的點兩兩間都有兩條不相交(經過的點不一樣)的路徑,那麼我們就稱這個無向圖是點-雙連通的。條件等價於任意兩條邊都在乙個簡單環內。

不難發現,若乙個無向圖是點-雙連通圖,那麼就代表這個圖內部無割頂(既然有兩條不相交的路徑,去掉任何乙個點都還是可以連通的)。

邊-雙連通:

類似的,若乙個無向圖的點兩兩間都有兩條不重合(這個要求低一點,點可以重複,但邊不行)的路徑,那麼我們就稱這個無向圖是邊-雙連通的。

在邊-雙連通圖中,去掉任何一條邊,這個圖都還是連通的。

​ 對於一張無向圖,它的點-雙連通的極大子圖稱為雙連通分量(biconnected component,bcc)。

​ 而邊-雙連通的極大子圖稱為邊-雙連通分量(edge-biconnected component)。

​ 如上圖:雖然也是點-雙連通的,但才叫雙連通分量,這就是極大子圖的意義。另外乙個雙連通分量是。還有,整個圖是邊-雙連通分量。

​ 還如上圖:對於整個圖來說,3是割頂。不難發現作為割頂的點會同時存在於多個雙連通分量裡。而其他點只可能存在於乙個雙連通分量裡。

​ 找連通分量首先要會找割頂。

​ 隨便找乙個點作為根,強行把無向圖轉換為一棵樹。連回祖先的邊我們叫它反向邊(要與有向圖的反向邊區分開)。

​ 不難發現:若某個點

v 的後代都沒有反向邊連回

v的祖先,那麼就可以得出

v 是割頂的結論。

​ 用時間戳就可以知道祖孫關係。

​ 若發現某個點的後代最多只能連回它自己,則說明這個點及它的後代就是乙個雙連通分量。

注意:用反向邊更新時,不能用連回父親的邊,這條邊沒意義。

例題:uvalive3523(這裡題解)

雙連通分量

在無向連通圖中,如果刪除該圖的任何乙個結點都不能改變該圖的連通性,則稱該圖是雙連通的。雙連通無向圖一定是連通的,而連通的無向圖則不一定是雙連通的。對於乙個連通的無向圖也有雙連通分量的概念,定義自然不言而喻。同樣,我們也可以利用tarjan演算法求雙連通分量。define n 10000 struct...

雙連通分量

在乙個無向連通圖中,如果任意去掉乙個定點i及依附於i的所有邊後得到的圖仍然連通,則稱該圖為 2 連通圖 否則,若得到多個連通分量,則該圖不是雙連通的,頂點i被稱為 割點 簡單的說,在雙連通圖中,任何一對頂點都至少存在兩條路徑可以互相到達。圖的連通 性不會任何乙個頂點的影響。這個性質具有許多重要的應用...

雙連通分量

雙連通分量就是無向圖中的強連通分量,基本就是找割頂和橋。割頂就是乙個點,如果把它取掉,連通分量數量就會增加,橋就是一條邊,同理。對於乙個連通圖,如果任意兩點至少存在兩條 點不重複 的路徑,也就是任意兩條邊都在乙個簡單環中,即內部無割頂,則說這個圖是點雙連通的。對於乙個連通圖,如果任意兩點至少存在兩條...