poj 3281,最大流,牛喫食物問題

Description

Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others.

Farmer John has cooked fabulous meals for his cows, but he forgot to check his menu against their preferences. Although he might not be able to stuff everybody, he wants to give a complete meal of both food and drink to as many cows as possible.

Farmer John has cooked F (1 ≤ F ≤ 100) types of foods and prepared D (1 ≤ D ≤ 100) types of drinks. Each of his N (1 ≤ N ≤ 100) cows has decided whether she is willing to eat a particular food or drink a particular drink. Farmer John must assign a food type and a drink type to each cow to maximize the number of cows who get both.

Each dish or drink can only be consumed by one cow (i.e., once food type 2 is assigned to a cow, no other cow can be assigned food type 2).

Input

Line 1: Three space-separated integers: NF, and D 
Lines 2..N+1: Each line i starts with a two integers Fi and Di, the number of dishes that cow i likes and the number of drinks that cow i likes. The next Fi integers denote the dishes that cow i will eat, and the Di integers following that denote the drinks that cow i will drink.

Output

Line 1: A single integer that is the maximum number of cows that can be fed both food and drink that conform to their wishes



這個是個最大流問題,求最多能能餵養多少頭牛,每個牛有食物和水。

構建流網絡圖:



如圖所示,分別是 S ,F(1—f),N(1-f),D(1-D),T;

我們把途中 食物-> 牛-> 水 稱爲一個食物鏈,根據題意是一條食物鏈就可以養一頭牛,求最多可以養活多少頭牛,但是這個流網絡存在問題,就是可能一頭牛在兩條食物鏈上。

所以牛這個結點需要分解成兩個結點,容量爲1.

當流網絡建好了,剩下的就是基本的最大流問題,反覆加入路徑,求殘留網絡是否存在增廣路徑,一直到不存在路徑爲止。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章