題目大意:有n個人,f的food,d的飲料,每個人對事物和飲料有偏好,並且如果乙個人沒有飲料或者事物他就會離開,問最後最多有幾個人留下來;
題目解析:開始是超級食物匯點,中間是人,因為每個人最多選一種食物,所以人與自己也要加一條邊,最後是超級飲料匯點,最大流ek即可;
ac**:
#include#include#include#include#include#include#includeusing namespace std;
const int inf=0x3fffffff;
const int maxn=10010;
struct node
};
vectorvec[maxn];
int pre[maxn],iter[maxn];
void add_edge(int from,int to,int cost)
void bfs(int s)
} }
} int dfs(int v,int t,int f)
} }
return 0;
} int max_flow(int u,int v)
} int main()
{ int n,i,j,f,d,t;
char str[1001];
while(scanf("%d%d%d",&n,&f,&d)!=eof)
{ for(i=0;i
hdu 4292 拆點 最大流)
思路 為了控制乙個人只連一瓶飲料,乙份食物,那麼我們可以把乙個人拆成兩個,他們之間連一條權值為1的邊,另外左邊連它喜歡的食物,權值為1,右邊連它喜歡的飲料,權值為1,在起點連食物的時候加流量限制,終點加流量限制,跑一遍最大流即可。1 include2 include3 include4 using ...
hdu 4292 拆點 最大流)
思路 為了控制乙個人只連一瓶飲料,乙份食物,那麼我們可以把乙個人拆成兩個,他們之間連一條權值為1的邊,另外左邊連它喜歡的食物,權值為1,右邊連它喜歡的飲料,權值為1,在起點連食物的時候加流量限制,終點加流量限制,跑一遍最大流即可。1 include2 include3 include4 using ...
hdu 4292 最大流 水題
很裸的一道最大流 格式懶得排了,注意把人拆成兩份,乙份連線食物,乙份連線飲料 4 3 3 4個人,3種食物,3種飲料 1 1 1 食物每種分別為1 1 1 1 飲料每種數目分別為1 yyn 第乙個人對第1,2,3種食物的態度為接受,接受和拒絕 nyyyny ynyyny 第乙個人對第1,2,3種飲料...