完美牛棚(匈牙利算法)

蓝桥杯集训每日一题acwing1394

农夫约翰上周刚刚建好了新的牛棚,并引进了最新的挤奶技术。

不幸的是,由于工程问题,牛棚中的每个单间都不太一样。

第一周,约翰将奶牛们随机分配在了各个单间中。

但是很快他就发现,每头奶牛都只愿意在一部分自己喜欢的单间中产奶。

在过去的一周中,农夫约翰一直在收集有关哪些奶牛愿意在哪些单间产奶的数据。

一个单间只能分配给一头奶牛,当然,一头奶牛也可能只愿意在一个单间中产奶。

给定奶牛的住宿喜好,请你计算,通过合理分配奶牛的住所,最多能够让多少奶牛可以住在自己愿意产奶的单间中。

输入格式

第一行包含两个整数 N 和 M,分别表示奶牛的数量以及单间的数量。

接下来 N 行,每行记录一个奶牛愿意产奶的单间信息。首先包含一个整数 Si,表示这头奶牛愿意在 Si 个单间中产奶。接下来包含 Si 个不同的整数,表示这些单间的编号。

所有单间的编号为 1∼M。

输出格式

输出一个整数,表示可以被分配在自己愿意产奶的单间中的奶牛的最大数量。

数据范围

0≤N,M≤200
0≤Si≤M

输入样例:

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

输出样例:

4

 也就是二分匹配的问题,考虑该房间是否已经匹配,选择两种做法,1.该房间为空,该奶牛可以直接入住  2.该房间已经匹配奶牛,那么看是否可以为其匹配另一个房间,则该房间由这头奶牛入住

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值