hdu 1151 Air Raid 最小路徑覆蓋

2022-06-11 21:12:11 字數 638 閱讀 5249

題意:乙個城鎮有n個路口,m條路。每條路單向,且路無環。現在派遣傘兵去巡邏所有路口,傘兵只能沿著路走,且每個傘兵經過的路口不重合。求最少派遣的傘兵數量。

建圖之後的就轉化成郵箱無環圖的最小路徑覆蓋問題。注意傘兵經過的路口不重合,這很重要,否則需要用傳遞閉包(floyd)來輔助建圖。

最小路徑覆蓋覆蓋=頂點數-最大匹配。

注意是 n - 最大匹配  不是2n

其實。。。我看原題好久 也沒看出來   經過的路口不重合 這句話。。。英語爛是原罪。。。啊啊啊啊

#include #include

#include

#include

#define n 220

using

namespace

std;

intmp[n][n],v[n],linker[n],n,m;

int dfs(int

t) }

}return0;

} inthungary()

return

ans;}

intmain()

cout

}}

注意是 n - 最大匹配  不是2n

HDU 1151 Air Raid(最小路徑覆蓋)

解答 最小路徑覆蓋問題 在乙個有向圖中,使用最少的路徑訪問完所有的節點。最小路徑覆蓋 頂點數 最大匹配數 有向圖g v,e 將v中每個頂點vi分成vi 與vi 如果存在一條vi到vj的邊,那麼就在二分圖中連線一條vi 與vj 的邊。證明參見 include using namespace std c...

hdu 1151 Air Raid(最小路徑覆蓋)

題目大意 在乙個城鎮,有m個路口,和n條路,這些路都是單向的,而且路不會形成環,現在要弄一些傘兵去巡查這個城鎮,傘兵只能沿著路的方向走,問最少需要多少傘兵才能把所有的路口搜一遍 選擇最少的邊 覆蓋所有頂點 最小路徑覆蓋 原圖不一定是二分圖,但必須是有向圖,拆點構造二分圖 在圖中找一些路徑,使之覆蓋了...

hdu 1151 Air Raid (二分匹配)

題目大意 在乙個城鎮,有m個路口,和n條路,這些路都是單向的,而且路不會形成環,現在要弄一些傘兵去巡查這個城鎮,傘兵只能沿著路的方向走,問最少需要多少傘兵才能把所有的路口搜一遍。這個題目就轉換成求解有向無環圖的最小路徑覆蓋問題了。思路 有向無環圖的最小路徑覆蓋 該圖的頂點數 該圖的最大匹配 incl...