过山车

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17836    Accepted Submission(s): 7779

Problem Description
RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑到经费问题,boss刘决定只让找到partner的人去坐过山车,其他的人,嘿嘿,就站在下面看着吧。聪明的Acmer,你可以帮忙算算最多有多少对组合可以坐上过山车吗?
Input
输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。
Output
对于每组数据,输出一个整数,表示可以坐上过山车的最多组合数。
Sample Input
6 3 3 1 1 1 2 1 3 2 1 2 3 3 1 0
Sample Output
3

最小点覆盖数:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边

独立集:图中任意两个顶点都不相连的顶点集合

交替路:从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边…形成的路径叫交替路。

增广路:从一个未匹配点出发,走交替路,如果途径另一个未匹配点(出发的点不算),则这条交替路称为增广路

定理1:二分图最大匹配==最小点覆盖数

定理2:顶点数-二分图最大匹配==最大独立集

定理3:最大匹配是增广路不存在的充要条件

匈牙利算法:

解决问题→二分图最大匹配,本质DFS,复杂度V*E

#include<stdio.h>
#include<string.h>
int k, n, m, road[505][505], vis[505], link[505];
int Sech(int x);
int main(void)
{int i, a, b, ans;while(scanf("%d", &k), k!=0){ans = 0;scanf("%d%d", &n, &m);memset(road, 0, sizeof(road));memset(link, 0, sizeof(link));for(i=1;i<=k;i++){scanf("%d%d", &a, &b);        /*road[a][b]==1表示第a个男生对第b个女生有好感,否则没有*/road[a][b] = 1;}for(i=1;i<=n;i++)        /*算法思路:从第一个男生开始,尽可能让每个男生匹配成功,或是还有心仪的女生名花无主直接匹配,或是调整前面已有的匹配已达到找到自己心仪的女生*/{memset(vis, 0, sizeof(vis));   /*vis为标记数组,vis[k]==1表示第k个女生已经被查找过并试图改变过该妹子的归属问题,没有必要再次查找*/if(Sech(i)==1)      /*第i个男生匹配成功*/ans++;}printf("%d\n", ans);}return 0;
}int Sech(int x)
{int i;for(i=1;i<=m;i++) /*对于每个男生,先枚举每一个女生*/{if(vis[i]==0 && road[x][i]==1)       /*如果这个女生还未被查找且这个男生对这个女生有好感*/{vis[i] = 1;       /*标记*/if(link[i]==0 || Sech(link[i])==1)        /*如果这个女生名花无主或是可以腾出个位置*/{            /*这其实是一个寻找增广路的过程*/link[i] = x;     /*恭喜这一对男女配对成功*/return 1;}}}return 0;
}

HDU 2063:过山车(匈牙利算法模板题)相关推荐

  1. hdu 2063 过山车(模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  2. [HDU - 2063] 过山车(二分图)

    Link:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  3. HDU - 2063 过山车(二分图最大匹配)

    题目链接:点击查看 题目大意:中文题目,不多赘述 题目分析:二分图最大匹配问题,匈牙利经典算法模板题,感觉这个博客写的很好,插个眼: https://article.itxueyuan.com/Aea ...

  4. HDU 2063 过山车 (二分图匹配之匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. HDU 2063 过山车 二分图匹配 匈牙利算法

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. HDU 2063 过山车【二分图最大匹配】

    Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...

  7. HDOJ2063过山车 匈牙利算法

    Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...

  8. HDUOJ 2063 过山车

    HDUOJ 2063 过山车 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规 ...

  9. HDU 2389 Rain on your Parade(二分匹配+Hopcroft-Carp算法模板题)

    You're giving a party in the garden of your villa by the sea. The party is a huge success, and every ...

最新文章

  1. layoutSubviews总结(转)
  2. 人工手动冷备不完全恢复介绍(purge表不完全恢复)
  3. R语言使用read.delim函数读取带分隔符的文本文件
  4. java gmail smtp_通过JAVA中的Gmail SMTP服务器发送电子邮件
  5. python进阶书籍的推荐 知乎-知乎看了很多推荐,最终选了这本Python入门
  6. Java代码判断数据库中某张表是否存在
  7. Mission系统预览
  8. SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
  9. linux 安装git失败,Linux运维知识之linux下安装git常见故障整理
  10. 选择排序 - python实现详解
  11. EF Code First 中使用Jarek Kowalski's Provider的方法1
  12. Spring JMX之二:远程访问MBean(spring通过annotation暴露MBean)
  13. 漫画小说听书三合一分销平台源码
  14. 解决域用户安装软件权限问题
  15. u3d学习-第一个小游戏
  16. php融云开发文档,融云应用公众服务开发者文档 - 融云 RongCloud
  17. android 图片过长,【05-25求助】怎样无损加载一张过长的图片
  18. Javafx中切换输入法
  19. html5程序员面试官如何提问,前端程序员第二轮面试的10个问题
  20. Testin云测技术沙龙在沪召开,云监控预警成关注重点

热门文章

  1. 零基础学python-零基础适合学习python吗?
  2. python基础教程菜鸟教程-终于懂得python入门菜鸟教程
  3. python3.6安装步骤-手动安装python3.6的操作过程详解
  4. win10语音识别的设置和开启
  5. 中文在线语音识别技术获重大突破!百度输入法准确率超行业最高水平15%
  6. 云知声原创技术再获肯定:多篇论文被国际语音顶会 INTERSPEECH 2020 收录
  7. 微信小程序开发公司哪家好?
  8. class属性表种类集合,以及字段详解
  9. 微信计步器怎么不计步_送我一顶圣诞帽@星尘StarDust,制作一个圣诞创意微信头像...
  10. LeetCode 530二叉搜索树的最小绝对差