#P794. 奶牛的晚餐

奶牛的晚餐

问题描述

FJ为奶牛们准备了美味的晚饭,但是奶牛们依旧对这些食物挑三拣四。每一头奶牛只喜欢吃某一些食物和饮料而别的一概不吃。FJ想让尽可能多的奶牛吃到她们喜欢的食品和饮料,尽管这样可能无法把所有的奶牛喂饱。

FJ做了F (1 <= F <= 100) 种食物并准备了D (1 <= D <= 100) 种饮料,并且他知道他的N (1 <= N <= 100)头奶牛的饮食习惯,即对于任意一头奶牛,FJ都知道她是否愿意吃某种食物和喝某种饮料。FJ希望尽可能多的牛能得到喜欢的食物和饮料。

每一份食物和饮料只能由一头牛来吃。例如,假设食物2被某一头奶牛吃掉了,其他奶牛就都不能吃食物2。

输入dining.in

输入的第一行是3个数,N,F,D。

接下来N行,每一行开头有两个数F_i和 D_i,分别表示第i头牛愿意吃的食品数和愿意喝的饮料数。这一行中接下来F_i个整数是第i头牛愿意吃的食品编号,再接下来的D_i个整数是第i头牛愿意喝的饮料编号。

输出dining.out

输出文件只包含一个整数,为能吃上晚饭的最大的牛的数目。

样例输入

4 3 3
2 2 1 2 3 1
2 2 2 3 1 2
2 2 1 3 1 2
2 1 1 3 3

输入样例解释

奶牛 1: 食品从 {1,2}, 饮料从 {1,2} 中选

奶牛 2: 食品从 {2,3}, 饮料从 {1,2} 中选

奶牛 3: 食品从 {1,3}, 饮料从 {1,2} 中选

奶牛 4: 食品从 {1,3}, 饮料从 {3} 中选

样例输出

3

输出样例解释

一种可行的分配方案是:

奶牛 1: 不吃

奶牛 2: 食品 #2, 饮料 #2

奶牛 3: 食品 #1, 饮料 #1

奶牛 4: 食品 #3, 饮料 #3

用鸽笼原理可以推出没有更好的解 (一共只有3种食品和饮料)。当然,别的数据会比样例复杂。