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

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

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

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

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <iostream>
#include <stack>
#include <map>
#include <queue>
using namespace std;
#define N 1010
#define INF 0x3f3f3f3f int match[N];
int mp[N][N];
bool vis[N];
int n, m; bool dfs(int u)
{
for(int i = ; i <= m; i++) {
if(mp[u][i] && !vis[i]) {
vis[i] = ;
if(match[i] == - || dfs(match[i])) {
match[i] = u;
return true;
}
}
}
return false;
} int main()
{
int k;
while(scanf("%d", &k), k) {
scanf("%d%d", &m, &n);
memset(mp, , sizeof(mp));
for(int i = ; i <= k; i++) {
int u, v;
scanf("%d%d", &u, &v);
mp[v][u] = ;
}
int ans = ;
memset(match, -, sizeof(match));
for(int i = ; i <= n; i++) {
memset(vis, , sizeof(vis));
if(dfs(i)) ans++;
}
printf("%d\n", ans);
}
return ;
}

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. WHERE谓词对索引使用的影响

    本篇博文只测试WHERE谓词对multi-column index使用的影响,主要篇幅是SQL代码+截图.详细内容请参考<Inside the SQL Server Query Optimize ...

  2. iOS网络开发之AFNetworking

    概述 AFNetworking是一个非常受欢迎的轻量级的iOS.Mac OS X网络通信类库.它建立在NSURLConnection.NSOperation以及其技术的基础上,有着精心设计的模块结构和 ...

  3. 使用NSURLSession请求需要AD认证的HTTPS服务器

    关键代码:使用后台下载PDF文件 - (void)startDownloadPDF{ NSURLSession *session = [self session]; NSString *downloa ...

  4. java 笔记(4) —— java I/O 流、字节流、字符流

    Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节.JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据 ...

  5. Java知多少(19)访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...

  6. 解决HierarchyViewer不能连接真机的问题

    今天想通过HierarchyViewer分析一下Android应用的布局,但是发现无法连接上真机,错误如下:     1 2 3 4 5 [hierarchyviewer]Unable to get ...

  7. mysql 线程池 数据库连接池

    当客户端请求的数据量比较大的时候,使用线程池可以节约大量的系统资源,使得更多的CPU时间和内存可以高效地利用起来.而数据库连接池的使用则将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视 ...

  8. C# 多线程 lock 实例

    class Program { static void Main(string[] args) { //在t1线程中调用LockMe,并将deadlock设为true(将出现死锁) int i = 1 ...

  9. 手机端js事件支持(event)

    http://blog.163.com/rex_blog/blog/static/1944801012013102743014369/ 所有被测试的浏览器都支持touchstart.touchend和 ...

  10. [MacOSX]

    When i run svn up in the folder, i got these error: svn: Error converting entry in directory 'XXXXX' ...