•圖的連通度
- 點連通度的定義:
一個具有$N$個點的圖$G$中,在去掉任意$k-1$個頂點后$(1<=k<=N)$,所得的子圖仍然連通,
去掉$K$個頂點后不連通,則稱$G$是$K$連通圖,$K$稱作圖$G$的連通度,記作$K(G)$。
- 邊連通度的定義:
一個具有$N$條邊的圖$G$中,在去掉任意$k-1$條邊后$(1<=k<=N)$,所得的子圖仍然連通,
去掉$K$條邊后不連通,則稱$G$是$K$連通圖,$K$稱作圖$G$的連通度,記作$K(G)$。
•連通度與最小割
既然圖的點連通度是去掉任意$k-1$個點連通,去掉$k$個點不連通,那么就是去掉最小的$k$個而致不連通,
也就是這$k$個點是此圖的最小割點集。邊連通度同理為最小割。
•連通度計算
- 指定源點和匯點
指定源點和匯點也就是指定求某一個具體點s到另一個具體點t的連通度
1、邊連通度(最小割)
•有向圖:
以s為源點,t為匯點建立網絡,原圖中的每條邊在網絡中仍存在,容量為1。求該網絡的最小割(也就是最大流)的值即為原圖的邊連通度。
•無向圖:
將圖中的每條邊(i, j)拆成<i, j>和<j, i>兩條邊,再按照有向圖的方法處理;
2、點連通度(最小割點集)
•有向圖:
需要拆點。建立一個網絡,原圖中的每個點$i$在網絡中拆成$i'$與$i''$表示入點和出點,有一條邊$<i', i''>$,容量為1
($<s', s''>$和$<t', t''>$例外,容量為正無窮表示不能割去)。原圖中的每條邊$<i, j>$在網絡中為邊$<i'', j'>$,
容量為正無窮。以$s'$為源點、$t''$為匯點求最大流,最大流的值即為原圖的點連通度。•無向圖:
將圖中的每條邊$(i, j)$拆成$<i, j>$和$<j, i>$兩條邊,再按照有向圖的方法處理。
- 不指定源點和匯點
固定一個點為源點,枚舉其他點為匯點,此時即為指定源點和匯點,取最小的最小割(或最小割集)
- 帶權連通度
在上述建圖時,容量為1改成權值即可
•例題
- Ural 1277 Cops and Thieves
【題目大意】
一個犯罪團伙打算去偷一家美術館。警察決定派 K 個人堵住所有從匪窩通向美術 館的道路不過他們只能駐守在沿途頂點處而不能在匪窩或美術館,且每個點都有一個需要警察駐守的最低人數 Ri。問警察能否完成任務。(2 < N <= 100, 1 < M <= 10000)
【思路】
指定源點匯點的無向圖的帶權點連通
【代碼】