二分匹配 二分+网络流 未完成

奶牛分配(stall4.pas/in.out) 
描述 
农夫约翰上个星期刚刚建好了他的新牛棚,他使用了最新的挤奶技术。不幸的是,由于工程问题,每个牛栏都不一样。第一个星期,农夫约翰随便地让奶牛们进入牛栏,但是问题很快地显露出来:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶。上个星期,农夫约翰刚刚收集到了奶牛们的爱好的信息(每头奶牛喜欢在哪些牛栏产奶)。一个牛栏只能容纳一头奶牛,当然,一头奶牛只能在一个牛栏中产奶。  
给出奶牛们的爱好的信息,计算最大分配方案。   
输入格式 
第一行 两个整数,N (0 <= N <= 200) 和 M (0 <= M <= 200) 。N 是农夫约翰的奶牛数量,M 是新牛棚的牛栏数量。  
第二行到第N+1行 一共 N 行,每行对应一只奶牛。第一个数字 (Si) 是这头奶牛愿意在其中产奶的牛栏的数目 (0 <= Si <= M) 。后面的 Si 个数表示这些牛栏的编号。牛栏的编号限定在区间 (1..M) 中,在同一行,一个牛栏不会被列出两次。  
 输出格式 
只有一行。输出一个整数,表示最多能分配到的牛栏的数量。   
SAMPLE INPUT  5 5 2 2 5 3 2 3 4 2 1 5 3 1 2 5 1 2  
SAMPLE OUTPUT  4

 

 二分图指的是这样一种图,其所有顶点可以分成两个集合X和Y,其中X或Y中任意两个在同一集合中的点都不相连,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。图中包含边数最多的匹配称为图的最大匹配。

 

还有另一中二分图加网络流的类型

http://blog.csdn.net/juncoder/article/details/38340447

 

posted @ 2014-10-29 18:16  juandx  阅读(254)  评论(0编辑  收藏  举报