过山车

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 11520    Accepted Submission(s): 5072
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

第一道二分匹配题。

纯属模板。

參考:http://blog.csdn.net/wellerzhao/article/details/7756956

代码1:

#include <stdio.h>
#include <string.h>
#define M 555 int map[M][M];
int mx[M], my[M];
int vis[M];
int n, m; int find(int s){
int i;
for(i = 1; i<= m; i ++){
if(!vis[i]&&map[s][i]){
vis[i] = 1;
if(my[i] == 0||find(my[i])){
my[i] = s;
mx[s] = i;
return 1;
}
}
}
return 0;
} void f(){
for(int i = 1; i <= n; i ++)
printf("%d..%d,,%d..%d\n", i, mx[i], i, my[i]);
}
int main(){
int k;
while(scanf("%d", &k), k){
int i;
memset(map, 0, sizeof(map));
memset(mx, 0, sizeof(mx));
memset(my, 0, sizeof(my));
int a, b;
scanf("%d%d", &n, &m);
for(i = 0; i < k; i ++){
scanf("%d%d", &a, &b);
map[a][b] = 1;
}
int ans = 0;
for(i = 1; i<= n; i ++){
if(!mx[i]){
memset(vis, 0, sizeof(vis));
if(find(i)) ++ans;
}
}
printf("%d\n", ans);
// f();
}
return 0;
}

以下的代码是另外的一种形式,,只是仅仅是多了个数组。

。。

思想还是一样的

代码;

#include <stdio.h>
#include <string.h>
#define M 555 int map[M][M];
int mx[M], my[M];
int vis[M];
int n, m; int find(int s){
int i;
for(i = 1; i<= m; i ++){
if(!vis[i]&&map[s][i]){
vis[i] = 1;
if(my[i] == 0||find(my[i])){
my[i] = s;
mx[s] = i;
return 1;
}
}
}
return 0;
} void f(){
for(int i = 1; i <= n; i ++)
printf("%d..%d,,%d..%d\n", i, mx[i], i, my[i]);
}
int main(){
int k;
while(scanf("%d", &k), k){
int i;
memset(map, 0, sizeof(map));
memset(mx, 0, sizeof(mx));
memset(my, 0, sizeof(my));
int a, b;
scanf("%d%d", &n, &m);
for(i = 0; i < k; i ++){
scanf("%d%d", &a, &b);
map[a][b] = 1;
}
int ans = 0;
for(i = 1; i<= n; i ++){
if(!mx[i]){
memset(vis, 0, sizeof(vis));
if(find(i)) ++ans;
}
}
printf("%d\n", ans);
// f();
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

hdoj 2063 过山车 【双边匹配匈牙利算法】的更多相关文章

  1. hdu 2063 过山车 二分匹配(匈牙利算法)

    简单题hdu2063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Ot ...

  2. hdoj 2063 过山车【匈牙利算法+邻接矩阵or邻接表】

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

  3. HDU 2063 过山车 二分匹配

    解题报告:有m个女生和n个男生要结成伴坐过山车,每个女生都有几个自己想选择的男生,然后要你确定最多能组成多少对组合. 最裸的一个二分匹配,这是我第一次写二分匹配,给我最大的感受就是看那些人讲的匈牙利算 ...

  4. HDU 2063 过山车(二分图 && 匈牙利 && 最小点覆盖)

    嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 这是一道很经典的匈牙利问题: 把男同学看成左边点,女同学看成右边点,如果两个同学愿意同 ...

  5. HDU 2063 过山车(二分匹配入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 二分匹配最大匹配数简单题,匈牙利算法.学习二分匹配传送门:http://blog.csdn.ne ...

  6. HDOJ 2063 过山车

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

  7. hdu 2063 过山车(匈牙利算法模板)

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

  8. hdu 2063 过山车(模板)

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

  9. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))

    Kingdom of Obsession Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

随机推荐

  1. 设计模式学习一:strategyPattern

    #ifndef STRATEGYPATTERN_H_#define STRATEGYPATTERN_H_#include<iostream>using namespace std; //策 ...

  2. malloc一次性最大能申请多大内存空间

    受用户态内存地址空间的限制.64 位系统下分配几个 T 不成问题. 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:zz matrix链接:http://www.zhihu. ...

  3. 也说Javascript对象拷贝及疑问

    一.浅拷贝 当我们需要将一个对象拷贝至另一个对象时,我们一般会这么实现 function shadowCopy(source,target){ var target=target||{}; for(v ...

  4. javamail发送邮件(转)

    今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接 ...

  5. include设置属性在relativelayout布局中无效

    转自:http://4265337.blog.163.com/blog/static/195375820127935731114/ 再来说一个在使用这两个标签时最容易出现的问题. 经常会有同学在Rel ...

  6. 关于git的ssh-key:解决本地多个ssh-key的问题

    在设置github的时候,官方的说明文档要求备份当前的id_rsa.然后生成一份新的私钥用于github的登陆.假设真这样做,那么新的私钥是无法再继续登陆之前的机器的. 这样的方法有点暴力- 还好ss ...

  7. Ansible@一个高效的配置管理工具--Ansible configure management--翻译(八)

    如无书面授权,请勿转载 第四章,大型项目中Ansible的使用 Roles If your playbooks start expanding beyond what includes can hel ...

  8. GUI测试要点

    本人测试知识还不完整,所以下面的文字总结自网络上的文章,红色字体为我平时的测试经验,如有雷同之处,还请见谅,仅自己学习之用. 转载请说明来自博客园--邦邦酱好. ------------------- ...

  9. HDU1194_Beat the Spread!

    Beat the Spread! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  10. How to import the www.googleapis.com SSL CA certification to the jks store file?

    Assumed that you have installed JDK and configured JAVA_HOME for your current operation system. (1)  ...