hdu 2063 过山车【匈牙利算法】(经典)
<题目链接>
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
解题分析:
二分图匹配中的匈牙利算法,不懂匈牙利算法的看这篇博客 >>>
主要要弄明白下面代码中的find[]数组中的递归过程,可以自己手动模拟一下过程。
#include <cstdio>
#include <cstring> const int maxn=+;
int k,m,n;
int line[maxn][maxn],boy[maxn],used[maxn]; bool find(int x){
for(int i=;i<=m;i++){ //遍历所有被选者
if(line[x][i]&&!used[i]){ //used数组的作用是,在递归中判断,boy[i]的原归属者,除第i个男生外,还有没有其他可供选择的男生
used[i]=;
if(!boy[i]||find(boy[i])){ //如果被选者没有归属者或他的归属着可以调换(他的归属者可以选择其它被选者)
boy[i]=x; //将归属定为 x
return true;
}
}
}
return false;
} int main()
{
while(scanf("%d%d%d",&k,&n,&m)!=EOF,k)
{
memset(line,,sizeof(line));
memset(boy,,sizeof(boy));
for(int i=;i<k;i++){
int x,y;
scanf("%d %d",&x,&y);
line[x][y]=; //表示x希望与 y有关系
} int sum=; //记录能撮合的情侣对数
for(int i=;i<=n;i++){
memset(used,,sizeof(used)); //used数组每次都要记得清0
if(find(i))sum++;
}
printf("%d\n",sum);
}
return ;
}
2018-08-13
hdu 2063 过山车【匈牙利算法】(经典)的更多相关文章
- hdu 2063 过山车(匈牙利算法模板)
http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others) Memory ...
- HDU 2063 过山车 (匈牙利算法)
题目链接:HDU 2063 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩 ...
- HDU 2063 过山车(匈牙利算法)
过山车 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissio ...
- hdu 1013 过山车 匈牙利算法(代码+详细注释)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- hdu 2063 过山车 二分匹配(匈牙利算法)
简单题hdu2063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Ot ...
- hdu 2063 过山车(模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others) Me ...
- [ACM] HDU 2063 过山车 (二分图,匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2063.过山车-Hungary(匈牙利算法)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 2063 过山车 (最大匹配 匈牙利算法模板)
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...
随机推荐
- C - Musical Theme (后缀数组)
题目链接:https://cn.vjudge.net/contest/283743#problem/C 题目大意:给你n个数组,然后问你是否有多个“相似”且不重叠的子串的长度大于等于5(两个子串相似当 ...
- SQL Server 备份还原
SQL Server支持三种备份方式 完全备份: 差异备份 事务日志备份 一般备份方式为,完全备份/每周,差异备份/每天,事务日志备份/按分钟计,这样可确保备份的高效性和可恢复性. 1. 完全备份 备 ...
- session和token
功能是一样的,都是要与浏览器建立连接,获取与客户端对应的用户数据,只不过完成这个功能的实现方式不太一样. 本质上的区别: session的使用方式是客户端cookie里存id,服务端session存用 ...
- 使用Groovy的mixin方法注入,和mixedIn属性实现过滤链
mixin方法注入不多说,这里只是用这个属性搞一个过滤器链的功能 假设我现在有个方法,输入一个字符串,然后需求提出需要进行大写转换输出, 过了一天又要加个前缀,再过了一天,需要把一些字符过滤掉.... ...
- GPIO接口解析【转】
本文提供了一个linux下访问GPIO的约定的概述. 这些调用使用gpio_* 命名前缀.没有别的调用会使用这个前缀或是相关的__gpio_*前缀. 转自:http://blog.163.com/w5 ...
- 八大最安全的Linux发行版,具备匿名功能,做服务器的首选,web,企业服务器等
10 best Linux distros for privacy fiends and security buffs in 2017 Introduction The awesome operati ...
- client模式下对应接口加入桥接出错
client模式下,响应的接口wlan0 加入桥接时出现如下错误: root@root:~# brctl addif br-lan wlan0brctl: bridge br-lan: Operati ...
- 将本地光盘做成yum源
环境:vmware 1.将centos6.5光盘挂载在虚拟机上 2.将光盘挂载在/mnt/cdrom目录下 root# mkdir /mnt/cdrom root # mount /mnt/cdro ...
- chart学习
效果图: 目录信息 graphic.jsp <%@ page language="java" contentType="text/html; charset=UTF ...
- JavaScript对象简介(一)
本节介绍js的9个对象:Array数组对象 Boolean(true false) Date日前对象 Math 数学对象 Number 数字对象 String 字符串对象 RegExp 正则表达式对象 ...