http://acm.hdu.edu.cn/showproblem.php?pid=2063

题意:有m个男,n个女,和 k 条边,求有多少对男女可以搭配。

思路:裸的二分图最大匹配,匈牙利算法。

枚举每一个男生,然后对其DFS,在DFS中枚举女生,如果有边相连的话,如果这个女生还没有搭档(match == -1),那么这个女生的搭档就是当前的男生,否则继续DFS这个女生的搭档,看看能不能让这个女生本来的搭档和其他女生搭配,从而给当前的男生腾出位置。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <cstdlib>
  5. #include <algorithm>
  6. #include <string>
  7. #include <iostream>
  8. #include <stack>
  9. #include <map>
  10. #include <queue>
  11. using namespace std;
  12. #define N 1010
  13. #define INF 0x3f3f3f3f
  14.  
  15. int match[N];
  16. int mp[N][N];
  17. bool vis[N];
  18. int n, m;
  19.  
  20. bool dfs(int u)
  21. {
  22. for(int i = ; i <= m; i++) {
  23. if(mp[u][i] && !vis[i]) {
  24. vis[i] = ;
  25. if(match[i] == - || dfs(match[i])) {
  26. match[i] = u;
  27. return true;
  28. }
  29. }
  30. }
  31. return false;
  32. }
  33.  
  34. int main()
  35. {
  36. int k;
  37. while(scanf("%d", &k), k) {
  38. scanf("%d%d", &m, &n);
  39. memset(mp, , sizeof(mp));
  40. for(int i = ; i <= k; i++) {
  41. int u, v;
  42. scanf("%d%d", &u, &v);
  43. mp[v][u] = ;
  44. }
  45. int ans = ;
  46. memset(match, -, sizeof(match));
  47. for(int i = ; i <= n; i++) {
  48. memset(vis, , sizeof(vis));
  49. if(dfs(i)) ans++;
  50. }
  51. printf("%d\n", ans);
  52. }
  53. return ;
  54. }

HDU:过山车(二分图最大匹配)的更多相关文章

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

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 女生为X集合,男生为Y集合,求二分图最大匹配数即可. #include<cstdio> ...

  2. # 匈牙利算法(二分图最大匹配)- hdu 过山车

    匈牙利算法(二分图最大匹配)- hdu 过山车 Hdu 2063 二分图:图中的点可以分成两组U,V,所有边都是连接U,V中的顶点.等价定义是:含奇数条边的图. 匹配:一个匹配是一个边的集合,其中任意 ...

  3. hdu 2063 过山车 (二分图,最大匹配)

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

  4. HDU - 2063 过山车(最大匹配数)(模板)

    1.男生女生一起坐过山车,每一排有两个座位,但是有个条件,就是每个女生必须找个男生做同伴一起(但是女生只愿意和某几个男生中的一个做同伴),求最多可以有多少对男女生组合坐上过山车. 2.二分图的最大匹配 ...

  5. HDU 2063 过山车 (最大匹配,匈牙利算法)

    题意:中文题目 思路:匈牙利算法解决二分图最大匹配问题. #include <bits/stdc++.h> using namespace std; ; int mapp[N][N]; / ...

  6. hdu——过山车(二分图,匈牙利算法)

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

  7. hdoj--2063--过山车(最大匹配)

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

  8. HDU - 1045 Fire Net (二分图最大匹配-匈牙利算法)

    (点击此处查看原题) 匈牙利算法简介 个人认为这个算法是一种贪心+暴力的算法,对于二分图的两部X和Y,记x为X部一点,y为Y部一点,我们枚举X的每个点x,如果Y部存在匹配的点y并且y没有被其他的x匹配 ...

  9. hdu 1083 Courses(二分图最大匹配)

    题意: P门课,N个学生.     (1<=P<=100    1<=N<=300) 每门课有若干个学生可以成为这门课的代表(即候选人). 又规定每个学生最多只能成为一门课的代 ...

  10. HDU 2063 过山车 二分图题解

    一个男女搭配的关系图,看能够凑成多少对,基本和最原始的一个二分图谜题一样了,就是 一个岛上能够凑成多少对夫妻的问题. 所以是典型的二分图问题. 使用匈牙利算法,写成两个函数,就很清晰了. 本程序还带分 ...

随机推荐

  1. 关于StdAfx.h和StdAfx.cpp

    http://www.cplusplus.com/articles/2z86b7Xj/ https://msdn.microsoft.com/en-us/library/h552b3ca.aspx h ...

  2. ios-XML文档解析之SAX解析

    首先SAX解析xml *xml文档的格式特点是节点,大体思路是把每个最小的子节点作为对象的属性,每个最小子节点的'父'节点作为对象,将节点转化为对象,输出. 每个节点都是成对存在的,有开始有结束.有始 ...

  3. Linux服务和运行级别科普

    在Linux中,列出所有的系统服务 chkconfig --list 输入以上命令可以看到类似以下的结果 sysstat :关闭 :关闭 :启用 :启用 :关闭 :启用 :关闭 tcsd :关闭 :关 ...

  4. DG - physical standby failover切换过程

    1.failover前检查 #如果有多个standby数据库,查看哪个standby接收的redo最新. SQL> select * from v$archive_dest_status: #查 ...

  5. Java基础之线程——使用Runnable接口(JumbleNames)

    控制台程序. 除了定义Thread新的子类外,还可以在类中实现Runnable接口.您会发现这比从Thread类派生子类更方便,因为在实现Runnable接口时可以从不是Thread的类派生子类,并且 ...

  6. tableview在第一次显示时会自动relodata

    tableview在第一次显示时会自动加载数据

  7. spring纯java注解式开发(一)

    习惯了用XML文件来配置spring,现在开始尝试使用纯java代码来配置spring. 其实,spring的纯java配置,简单来说就是将bean标签的内容通过注解转换成bean对象的过程,没什么神 ...

  8. bootstrap, boosting, bagging 几种方法的联系

    http://blog.csdn.net/jlei_apple/article/details/8168856 这两天在看关于boosting算法时,看到一篇不错的文章讲bootstrap, jack ...

  9. ReportingService 通过RowNumber函数获取行号和生成隔行变色样式

    以前一直没有搞明白SSRS里面的RowNumber函数到底该怎么用,所以一直没有很好的办法在SSRS中的表格上实现隔行变色的样式,实现隔行变色的关键就是获取表格中每一行的行号.在最近了解了下这个函数, ...

  10. 关于UIView(转)

    曾经有人这么说过,在iphone里你看到的,摸到的,都是UIView,所以UIView在iphone开发里具有非常重要的作用.那么UIView我们到底知道多少呢.请看看下面的问题, 如果这些你都知道, ...