本片系**:
首先,最小路徑覆蓋=總節點數-最大匹配數。這個應該已經是路人皆知了。
所謂最小路徑覆蓋,是指在乙個有向圖中,找出最少的幾條路徑,用它們來覆蓋全圖
這裡說的值得注意的地方,如果有向圖的邊有相交的情況,那麼就不能簡單的對原圖求二分匹配了
舉個例子,假設有圖:1->2 2->5 2->3 4->2,事實上,這其實就是兩條邊:1->5 4->3 ,節點2只是他們的乙個交點
如果只是簡單的在原圖的基礎上求二分匹配,那麼得到的匹配答案是2,最小路徑覆蓋答案便是5-2=3。
可是隨便一看都能看看出端倪,這個圖中,只需要兩個點便可以探索完整個地圖,這裡最小路徑覆蓋數明顯是2。
問題究竟出在**呢?其實就和這個交點2有關。既然邊有相交,那麼他們的連通性也應該連通下去。
解決的辦法是對原圖進行一次閉包傳遞(也就是flody),於是便增加了四條邊:1->3 1->5 4->3 4->5
這時再求最大匹配數,匹配答案便是3,最小路徑覆蓋值為2,這是正確答案!
最小路徑覆蓋問題(最小路徑覆蓋)
本題題目描述可以發現很明顯的最小路徑覆蓋問題,又因為最小路徑覆蓋 節點數 二分圖最大匹配數,所以本題可以用匈牙利演算法求出二分圖最大匹配數,也可以向第一題那樣用網路流模型求出最大匹配數。本題建模時不同在於,每個點要分成兩個點,乙個為起點,乙個為終點,再來求二分圖最大匹配。然後麻煩就在於本題也要輸出路...
最小路徑覆蓋
zoj 2521 led display 題意 七段數碼顯示器,乙個數碼上的7段燈可以選擇滅掉一些後重複使用這個數碼,但滅掉的段不能再亮了。比如 6 可以 滅掉左小角的一段變成 5 來使用。但自己不能重複使用,即最少滅一段才能再次使用。現在按次序給出 乙個要現實的數碼序列,求需要的最少的燈數,使得能...
最小路徑覆蓋
差不多是模板題了 分析 最小路徑覆蓋 n 最大匹配數 n為 總點數 因為匹配的點 相互 交叉形成一條條最長路徑 剩餘沒匹配的點需要進行就是需要匹配數 及 最小路徑覆蓋數 include using namespace std define maxn 1005 int match maxn int v...