網路流24題 最小路徑覆蓋問題

2022-05-13 10:23:47 字數 673 閱讀 9521

p2764 傳送門

基本模型

首先結論為:將每個點$v$拆成$v,v'$,有向邊$edge(u,v)$改為$edge(u,v')$,建成二分圖

那麼$最小路徑覆蓋數=n-二分圖最大匹配數$

證明:匹配$(u,v')$相當於連線了$(u,v)$,連通塊個數減一,想要連通塊最少自然要最大匹配

如果要輸出方案的話增廣時記錄$u$的下乙個點$v$即可

#include using

namespace

std;

const

int maxn=2e4+10

;struct edgee[maxn<<2

];int n,m,x,y,res,vis[maxn],mat[maxn],nxt[maxn],head[maxn],in

[maxn],tot;

void add_edge(int

from,int

to);head[from]=tot;

e[++tot]=;head[to]=tot;

}int dfs(int

x) }

return

false;}

intmain()

printf("%d

",n-res);

return0;

}

網路流24題 最小路徑覆蓋 (最小路徑覆蓋)

題目 給定有向圖g v,e 設p是g的乙個簡單路 頂點不相交 的集合。如果v中每個頂點恰好在p的一條路上,則稱p是g的乙個路徑覆蓋。p中路徑可以從v的任何乙個頂點開始,長度也是任意的,特別地,可以為0。g的最小路徑覆蓋是g的所含路徑條數最少的路徑覆蓋。設計乙個有效演算法求乙個有向無環圖g的最小路徑覆...

網路流24題 最小路徑覆蓋問題

有向無環圖最小路徑覆蓋,可以轉化成二分圖最大匹配問題,從而用最大流解決。構造二分圖,把原圖每個頂點i拆分成二分圖x,y集合中的兩個頂點xi和yi。對於原圖中存在的每條邊 i,j 在二分圖中連線邊 xi,yj 然後把二分圖最大匹配模型轉化為網路流模型,求網路最大流。最小路徑覆蓋的條數,就是原圖頂點數,...

最小路徑覆蓋問題(網路流24題)

問題描述 給定有向圖g v,e 設p 是g 的乙個簡單路 頂點不相交 的集合。如果v 中每個頂點恰好在p 的一條路上,則稱p是g 的乙個路徑覆蓋。p 中路徑可以從v 的任何乙個頂點開始,長度也是任意的,特別地,可以為0。g 的最小路徑覆蓋是g 的所含路徑條數最少的路徑覆蓋。設計乙個有效演算法求乙個有...