HDU 2063:过山车(匈牙利算法模板题)
过山车
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17836 Accepted Submission(s): 7779
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。
最小点覆盖数:假如选了一个点就相当于覆盖了以它为端点的所有边,你需要选择最少的点来覆盖所有的边
独立集:图中任意两个顶点都不相连的顶点集合
交替路:从一个未匹配点出发,依次经过非匹配边、匹配边、非匹配边…形成的路径叫交替路。
增广路:从一个未匹配点出发,走交替路,如果途径另一个未匹配点(出发的点不算),则这条交替路称为增广路
定理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:过山车(匈牙利算法模板题)相关推荐
- hdu 2063 过山车(模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others) Me ...
- [HDU - 2063] 过山车(二分图)
Link:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others) Me ...
- HDU - 2063 过山车(二分图最大匹配)
题目链接:点击查看 题目大意:中文题目,不多赘述 题目分析:二分图最大匹配问题,匈牙利经典算法模板题,感觉这个博客写的很好,插个眼: https://article.itxueyuan.com/Aea ...
- HDU 2063 过山车 (二分图匹配之匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2063 过山车 二分图匹配 匈牙利算法
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2063 过山车【二分图最大匹配】
Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...
- HDOJ2063过山车 匈牙利算法
Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生 ...
- HDUOJ 2063 过山车
HDUOJ 2063 过山车 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规 ...
- 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 ...
最新文章
- layoutSubviews总结(转)
- 人工手动冷备不完全恢复介绍(purge表不完全恢复)
- R语言使用read.delim函数读取带分隔符的文本文件
- java gmail smtp_通过JAVA中的Gmail SMTP服务器发送电子邮件
- python进阶书籍的推荐 知乎-知乎看了很多推荐,最终选了这本Python入门
- Java代码判断数据库中某张表是否存在
- Mission系统预览
- SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
- linux 安装git失败,Linux运维知识之linux下安装git常见故障整理
- 选择排序 - python实现详解
- EF Code First 中使用Jarek Kowalski's Provider的方法1
- Spring JMX之二:远程访问MBean(spring通过annotation暴露MBean)
- 漫画小说听书三合一分销平台源码
- 解决域用户安装软件权限问题
- u3d学习-第一个小游戏
- php融云开发文档,融云应用公众服务开发者文档 - 融云 RongCloud
- android 图片过长,【05-25求助】怎样无损加载一张过长的图片
- Javafx中切换输入法
- html5程序员面试官如何提问,前端程序员第二轮面试的10个问题
- Testin云测技术沙龙在沪召开,云监控预警成关注重点
热门文章
- 零基础学python-零基础适合学习python吗?
- python基础教程菜鸟教程-终于懂得python入门菜鸟教程
- python3.6安装步骤-手动安装python3.6的操作过程详解
- win10语音识别的设置和开启
- 中文在线语音识别技术获重大突破!百度输入法准确率超行业最高水平15%
- 云知声原创技术再获肯定:多篇论文被国际语音顶会 INTERSPEECH 2020 收录
- 微信小程序开发公司哪家好?
- class属性表种类集合,以及字段详解
- 微信计步器怎么不计步_送我一顶圣诞帽@星尘StarDust,制作一个圣诞创意微信头像...
- LeetCode 530二叉搜索树的最小绝对差