【杭电100题】RPG专场练习赛 2063 过山车(匈牙利算法)

Problem Description

过山车的每一排只有两个座位,每个女生必须找个男生做partner和她同坐,每个女生都愿意跟若干男生做partner。只让找到partner的人去坐过山车,最多有多少对组合可以坐上过山车?

Input

输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。

Output

对于每组数据,输出一个整数,表示可以坐上过山车的最多组合数。


 【2018/11/7】

1、这篇博客讲的生动形象:超级详细讲解匈牙利算法

因为一开始关于visit数组我没看懂,所以在这里再补充几句:

算法思路是:让每一个女生独自寻找男生,如果找到了,那么组合数+1

寻找过程的代码如下:

//女生x来寻找partner
bool find(int x)
{
    //遍历每一个男生i
    for(int i=0; i<n; i++)
    {
        //若女生x未找过男生i
        //且女生x愿意和男生i做partner
        if(!visit[i]&&map[x][i])
        {
            //记录男生i被找过
   
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值