雙連通份量和強連通份量的總結

【雙連通份量】

1、邊雙連通份量定義ide

在份量內的任意兩個點總能夠找到兩條邊不相同的路徑互相到達。總而言之就是一個圈,正着走反着走均可以相互到達,至少只有一個點。it

2、點雙連通份量的定義模板

參照上面,惟一的不一樣:任意兩個點能夠找到一個點不一樣的路徑互相到達。也是一個圈,正反走均可以,至少爲一個點。class

3、邊、點雙連通份量模板代碼要注意的地方遍歷

邊雙連通份量:方法

1.每一個節點的全部兒子遍歷後纔開始計算份量大小,請與點雙連通相區分;統計

2.割頂只能屬於一個份量,請與割邊區分;(容易搞混)總結

3.要注意j是不是i的父節點;

di

點雙連通份量:時間

 

1.每遍歷一個兒子就計算是否有點連通份量;

2.割頂能夠屬於多個連通份量,請注意與割邊區分;

3.當i爲根節點時,至少要有兩個兒子才能是割點;

 

【強連通份量】

1、定義

有向圖上的環,不囉嗦,與上面兩種相似,至少爲一個點;

 

2、模板代碼注意的地方

1.每一個點全部兒子遍歷完纔開始求份量;(相似邊雙連通份量)

2.每一個點只能屬於一個份量;

 

【強連通份量和雙連通份量常見的模型和問法】

雙連通份量

1.給出的圖是非連通圖,如:

a.有一些點,一些邊,加最少的邊,要使得整個圖變成雙聯通圖。

大體方法:求出全部份量,把每一個份量當作一個點,統計每一個點的度,有一個度爲一則cnt加1,答案爲(cnt+1)/2;

b.有一些點,一些邊,問最少多少個點單着。

大體方法:求出全部的份量便可,但要注意不一樣的題可能有特殊要求(如圓桌騎士要求奇圈,要用到二分圖斷定)

c.各類變式問題

 

2.給出的圖是連通圖,如:

a.給定一個起點一個終點,求各類問題是否能實現。

大體方法:求出全部份量,並把每一個份量當成點,因而問題獲得化簡;

b.給一個圖,而後有大量的離線回答。

大體方法:求出全部份量,再求出上下子樹的信息;

c.各類變式問題;

 

強連通份量

1.給出的是非連通圖,如:

a.有一些點,一些有向邊,求至少加多少邊使任意兩個點可相互到達

大體方法:求出全部的份量,縮點,分別求出出度入度爲0的點的數量,取多的爲答案;

b.有一些點,一些有向邊,求在這個圖上走一條路最多能夠通過多少個點

大體方法:求出全部的份量,縮點,造成一個或多個DAG圖,而後作DAG上的dp

c.有一些點,一些有向邊,給出一些特殊點,求終點是特殊點的最長的一條路

大體方法:求出全部份量,並標記哪些份量有特殊點,而後也是DAG的dp

 

2.給出的是連通圖,比較少,有也比較簡單

----------------------------------------------------------------

總結:

1.遇到非連通圖幾乎能夠確定是要求連通份量,不管是無向仍是有向圖;(能夠節約大量思考時間)

2.凡是對邊、點的操做,在同一個份量內任意一個點效果相同的,幾乎都是縮點解決問題;再粗暴點,幾乎求了連通份量都要縮點;

3.必定要考慮特殊狀況,如整個圖是一個連通份量等(考慮到了就有10-20分);

4.對於雙連通份量要分析是邊仍是點雙連通份量;經過題目來判斷;

5.拿到題目要先搞清楚給的是連通圖仍是非連通圖。

相關文章
相關標籤/搜索