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
分析:匈牙利算法。
code:
View Code

#include<stdio.h>#include<string.h>#define clr(x)memset(x,0,sizeof(x))bool g[505][505];bool v[505];int l[505];int n,m;int find(int k){int i;for(i=1;i<=m;i++)    {if(g[k][i]&&!v[i])        {            v[i]=1;     /* 男生 k 与女生 i 配对(i 未与别的男生配对);                                                             * 女生 i 与别的男生(l[i])配对了,                                                             * 但从与女生 i 配对的男生开始找, 可以找到另外一个可以匹配的 */if(l[i]==0||find(l[i]))            {                l[i]=k;return 1;            }        }    }return 0;}int main(){int i,k,p,q,tot;while(scanf("%d",&k),k)    {        scanf("%d%d",&n,&m);        clr(g);  clr(l);for(i=0;i<k;i++)        {            scanf("%d%d",&p,&q);            g[p][q]=1;        }        tot=0;for(i=1;i<=n;i++)  //每个男的找女友        {            clr(v);if(find(i))            tot++;        }        printf("%d\n",tot);    }return 0;}

邻接表:
View Code

#include<stdio.h>#include<string.h>#define N 1010struct node{int v;int next;}e[N*N];int k,m,n,h[N];int f[N];int s[N];int find(int x){int i,y;for(i=h[x];i>=0;i=e[i].next) {  y=e[i].v;if(!s[y])  {   s[y]=1;if(!f[y]||find(f[y]))   {    f[y]=x;return 1;   }  } }return 0;}int main(){int i,j,k,r;while(scanf("%d",&k),k) {  scanf("%d%d",&m,&n);for(i=1;i<=m;i++)   h[i]=-1;for(i=1;i<=n;i++)   f[i]=0;  r=k=0;while(k--)  {   scanf("%d%d",&i,&j);   e[k].v=j;   e[k].next=h[i];   h[i]=k++;  }for(i=1;i<=m;i++)  {   memset(s,0,sizeof(s));if(find(i))    r++;  }  printf("%d\n",r); }return 0;}

转载于:https://www.cnblogs.com/dream-wind/archive/2012/03/15/2397197.html

HDU 2063 过山车【二分图最大匹配】相关推荐

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

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

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

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

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

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

  4. hdu 2063 过山车(模板)

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

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

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

  6. HDUOJ 2063 过山车

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

  7. 过山车java,杭电 acm 2063 ( 过山车 )

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

  8. 杭电oj 2063 过山车(匈牙利算法)

    前言: 匈牙利算法主要是解决二分图最大匹配问题,它用一句话总结就是"先到先得,能让就让" 这里是很板子裸匈牙利算法的一题,当然,比赛的题就没这么裸了,需要我们仔细观察.同裸的一题还 ...

  9. HDU - 1528 Card Game Cheater(二分图最大匹配)

    题目链接:点击查看 题目大意:题意有点像求田忌赛马的最优解,大概意思就是现在有两个人,每个人都有n张不同的扑克牌,扑克牌的大小首先以点数来确定,点数相同的情况下以花色来决定,红桃(Heart)> ...

最新文章

  1. 建立你的第一个 Git 仓库
  2. 陈伯雄lisp_基于AutoLisp的AutoCAD二次开发自动生成系统图
  3. Java笔记-JNI中简单的参数与返回值处理
  4. vim emmet插件
  5. android.mk 冒号,android学习-ndk-build(androidstudio编译cocos2d-x库的cpp为so文件的解释)
  6. github和git的简单使用
  7. IPv6邻居状态与邻居检测机制
  8. DBN原理及实践-TensorFlow
  9. 跃迁 成为高手的技术
  10. 认识web,web的标准构成和基本元素
  11. 群晖如何建php网站_群晖建博客详细教程
  12. python stacktrace_pystack--python stack trace--让python打印线程栈信息
  13. 一天接收了131份前端面试简历......(面试总结)
  14. sql server关系代数练习--进阶
  15. ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 Scores
  16. Nginx报错Mixed Content: The page was loaded over HTTPS, This content should also be served over https
  17. 交互与前端13 Tabulator 表格实践
  18. 控制儿童在什么时段使用计算机,win10系统设置控制孩子用电脑的时间的图文步骤...
  19. 如何在 Illustrator 中应用任意形状渐变?
  20. word2vec和word embedding有什么区别?

热门文章

  1. 线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置
  2. scrapy 第一个案例(爬取腾讯招聘职位信息)
  3. 【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型
  4. Kubernetes容器上下文环境
  5. 58.贪心算法练习:  最小新整数
  6. 移动端输入框弹出键盘控制
  7. 这样去写你的 HTML
  8. WSS3.0自带数据库可以使用SQL 2005 Server Management Studio来管理
  9. 删除android系统自带的第三方软件
  10. 主流浏览器和内核及Web标准