#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种食品和饮料)。当然,别的数据会比样例复杂。