Food 割點 網路流

2021-09-26 18:15:42 字數 1199 閱讀 9023

food

/*

food

hdu - 4292

題面:每個人有多個喜歡的食物和飲料,每個人只能挑一種食物和飲料,問最大能滿足多少人

解法: 割點(吧人分成兩部分,中間用邊權為1的線連線,這樣保證每個人只能挑一種食物和飲料)

建圖(原點-->食物-->人1-->人2-->飲料-->匯點)

開始跑最大流

*/#include

#include

#include

#include

#include

using namespace std;

#define inf 0x3f3f3f3f

#define maxn 1001000

#define ll long long

struct nodewedge[maxn<<1]

;int whead[maxn]

;int wcnt;

int dis[maxn]

;int n,f,d;

int fx,dx;

int b,e;

void

init()

void

add(

int u,

int v,

int w)

bool bfs

(int b,

int e)}}

return dis[e]!=-

1;}int

dfs(

int u,

int low)

} dis[u]=-

1;return0;

}void

dinic

(int b,

int e)

printf

("%d\n"

, ans);}

intmain()

for(

int i=

1;i<=d;i++

)char c[

300]

;for

(int i=

1;i<=n;i++)}

}for

(int i=

1;i<=n;i++)}

}for

(int i=

1;i<=n;i++

)dinic

(b,e);}

}

hdu 4292 Food 拆點網路流

解法 拆人 include include include include include include include include include include include include include include include include include include ...

網路流最小割(拆點)

具體思路 網路流的最小割等於玩網路流的最大流量,注意拆點,以及拆點後邊連的時候是拆點後第二個點連向目的地。ac include include include includeusing namespace std const int maxn 100010 點數的最大值 const int maxm...

網路流 拆點 最小割點集

byteland 國 收到了一條匿名舉報,其中說當地黑幫老大正計畫一次從港口到郊區倉庫的運輸。知道運輸的時間並且知道運輸需要用到國家的高速公路網。高速公路網包含雙向的高速公路段,每個路段直接連著兩個不同的收費站。乙個收費站可能與很多其他的收費站相連。汽車只能通過收費站進入或離開高速公路網。據所知,黑...