ACM 最大流 dinic 模板

2021-06-18 13:21:09 字數 1055 閱讀 8261

最大流的應用實在是太廣泛了

幾個比較有用的定理:

最大流=最小割

二分圖最大匹配=二分圖最小點覆蓋(最大流)

二分圖的匹配直接用最大流好了。

下面是個很喜歡的dinic模板,順便用這個版過掉poj3041

#include using namespace std;

const int maxn=150000;

const int maxm=2000000;

const int inf=1<<30;

struct edgee[maxm];;

int v[maxn], que[maxn], dis[maxn],len;

void init()

void insert(int from, int to, int va)

int dinic(int n, int s, int t)

}id = e[id].next;}}

if (dis[t] == -1) break;

id = s, tail = 0;

while(true)

for(i = 0; i < tail; i++)

e[que[i]].val -= flow, e[que[i] ^ 1].val += flow;

ans += flow; tail = fir; id = e[que[fir]].from;

}id = v[id];

while(id != -1)

if (id != -1)

else}}

return ans;

}int main()

{ int t,n,m,a,b,c,cas,i,j;

// while (scanf("%d",&t)!=eof)

// {

// cas = 0;

// while (t--)

// {

init();

cin>>n>>m;//依次是點的個數 邊的條數

while (m--)

{// cout<

最大流dinic模板

運輸問題1 輸入檔案 maxflowa.in 輸出檔案 maxflowa.out 簡單對比 時間限制 1 s 記憶體限制 128 mb 問題描述 乙個工廠每天生產若干商品,需運輸到銷售部門進行銷售。從產地到銷地要經過某些城鎮,有不同的路線可以行走,每條兩城鎮間的公路都有一定的流量限制。請你計算,在不...

最大流 Dinic模板

date 2015 8 21 晚上 author itak motto 今日的我要超越昨日的我,明日的我要勝過今日的我 以創作出更好的 為目標,不斷地超越自己。include include using namespace std oo表示無窮大 const int oo 1e9 5 mm表示邊的最...

最大流模板(Dinic)

和最小費用流模板對比著看 最小費用流模板 貼上最大流模板 include includeusing namespace std const int oo 1e9 oo 表示無窮大 const int mm 111111111 mm 表示邊的最大數量,記住要是原圖的兩倍,在加邊的時候都是雙向的 con...