月老的难题

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
描写叙述

月老准备给n个女孩与n个男孩牵红线。成就一对对美好的姻缘。

如今,因为一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭。

如今已知哪些男孩与哪些女孩假设结婚的话。能够结成幸福的家庭。月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧。

如果男孩们分别编号为1~n,女孩们也分别编号为1~n。

输入
第一行是一个整数T,表示測试数据的组数(1<=T<=400)

每组測试数据的第一行有两个整数n,K。当中男孩的人数与女孩的人数都是n。(n<=500,K<=10 000)

随后的K行。每行有两个整数i,j表示第i个男孩与第j个女孩有可能结成幸福的家庭。(1<=i,j<=n)
输出
对每组測试数据。输出最多可能促成的幸福家庭数量
例子输入
  1. 1
  2. 3 4
  3. 1 1
  4. 1 3
  5. 2 2
  6. 3 2
例子输出
  1. 2
来源
经典题目
上传者

userid=%E5%BC%A0%E4%BA%91%E8%81%AA" style="text-decoration:none; color:rgb(55,119,188)">张云聪

题解:用邻接矩阵TLE,换成链式前向星才过。匈牙利模板题。

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define maxn 505
  4. #define maxm 10010
  5.  
  6. int n, k, id;
  7. int head[maxn], B[maxn];
  8. bool vis[maxn];
  9. struct Node {
  10. int v, next;
  11. } E[maxm];
  12.  
  13. void addEdge(int u, int v) {
  14. E[id].v = v; E[id].next = head[u];
  15. head[u] = id++;
  16. }
  17.  
  18. bool findPath(int x) {
  19. int i, v;
  20. for(i = head[x]; i != -1; i = E[i].next) {
  21. v = E[i].v;
  22. if(!vis[v]) {
  23. vis[v] = true;
  24. if(!B[v] || findPath(B[v])) {
  25. B[v] = x; return true;
  26. }
  27. }
  28. }
  29. return false;
  30. }
  31.  
  32. int MaxMatch() {
  33. int ans = 0;
  34. for(int i = 1; i <= n; ++i) {
  35. memset(vis, 0, sizeof(bool) * (n + 1));
  36. if(findPath(i)) ++ans;
  37. }
  38. return ans;
  39. }
  40.  
  41. int main() {
  42. // freopen("stdin.txt", "r", stdin);
  43. int t, u, v;
  44. scanf("%d", &t);
  45. while(t--) {
  46. scanf("%d%d", &n, &k);
  47. memset(head, -1, sizeof(int) * (n + 1));
  48. memset(B, 0, sizeof(int) * (n + 1));
  49. id = 0;
  50. while(k--) {
  51. scanf("%d%d", &u, &v);
  52. addEdge(u, v);
  53. }
  54. printf("%d\n", MaxMatch());
  55. }
  56. return 0;
  57. }

NYOJ239 月老的难题 【二分图最大匹配&#183;匈牙利】的更多相关文章

  1. 二分图最大匹配:匈牙利算法的python实现

    二分图匹配是很常见的算法问题,一般用匈牙利算法解决二分图最大匹配问题,但是目前网上绝大多数都是C/C++实现版本,没有python版本,于是就用python实现了一下深度优先的匈牙利算法,本文使用的是 ...

  2. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题

    题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...

  3. "《算法导论》之‘图’":不带权二分图最大匹配(匈牙利算法)

    博文“二分图的最大匹配.完美匹配和匈牙利算法”对二分图相关的几个概念讲的特别形象,特别容易理解.本文介绍部分主要摘自此博文. 还有其他可参考博文: 趣写算法系列之--匈牙利算法 用于二分图匹配的匈牙利 ...

  4. 二分图最大匹配(匈牙利算法)简介& Example hdu 1150 Machine Schedule

    二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知 ...

  5. 【模板】二分图最大匹配(匈牙利算法)/洛谷P3386

    题目链接 https://www.luogu.com.cn/problem/P3386 题目大意 给定一个二分图,其左部点的个数为 \(n\),右部点的个数为 \(m\),边数为 \(e\),求其最大 ...

  6. [hihoCoder] #1122 : 二分图二•二分图最大匹配之匈牙利算法

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上一回我们已经将所有有问题的相亲情况表剔除了,那么接下来要做的就是安排相亲了.因为过年时间并不是很长,所以姑姑希望能够尽可 ...

  7. 无权二分图最大匹配 HDU2063 匈牙利算法 || Hopcroft-Karp

    参考两篇比较好的博客 http://www.renfei.org/blog/bipartite-matching.html http://blog.csdn.net/thundermrbird/art ...

  8. POJ1469 COURSES 【二分图最大匹配&#183;HK算法】

    COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17777   Accepted: 7007 Descript ...

  9. 【hihocoder 1122】二分图二•二分图最大匹配之匈牙利算法

    [Link]:https://hihocoder.com/problemset/problem/1122 [Description] [Solution] 二分图匹配,匈牙利算法模板题; 这里我先把染 ...

随机推荐

  1. ADB用法

    作为android开发人员,adb是常用的工具之一.具体怎么使用了. 1. 安装完ADB后(ADB的安装请参考<Android开发平台搭建及配置.doc>),用电脑USB连接机器,然后使用 ...

  2. Discuz上传错误

    换了服务器后,上传图片的时候,显示上传100%,然后报错:upload error: 500.怎么回事那? [解决方法] 原来是php上传文件的时候,会首先上传到一个临时目录.如果临时目录没有权限,就 ...

  3. HAProxy的独门武器:ebtree

    1. HAProxy和ebtree简介 HAProxy是法国人Willy Tarreau个人开发的一个开源软件,目标是应对客户端10000以上的同时连接,为后端应用服务器.数据库服务器提供高性能的负载 ...

  4. linux 硬连接与软连接

    1.linux中文件占用一个inode,inode指向文件内容.2.文件名可以认为是一个指针,指向inode.硬连接相当于指针的整体拷贝,并不是对文件内容的拷贝.两个文件名(两个指针)都能修改文件,删 ...

  5. C#.NET常见问题(FAQ)-VS如何整个项目中查找字符串

    Ctrl+F打开查找对话框,然后输入查找字符串,电机右边的小三角,选择整个解决方案,就可以遍历所有文件查找指定字符了     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http:// ...

  6. 【oracle】dblink创建

    目的:oracle中跨数据库查询 两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据 解决:查询得知使用d ...

  7. PHP高级教程-邮件

    PHP 发送电子邮件 PHP 允许您从脚本直接发送电子邮件. PHP mail() 函数 PHP mail() 函数用于从脚本中发送电子邮件. 语法 mail(to,subject,message,h ...

  8. TQ2440 LCD试验失败经验教训

    试验环境:TQ2440开发板(配套TQ4.3寸屏) 试验参考书目:<ARM处理器裸机开发实战--机制而非策略>(以下简称<裸机开发实战>) <裸机开发实战>第13章 ...

  9. validationEngine 表单验证插件使用

    废话少说,直接上代码,可拷贝直接运行: <!DOCTYPE html> <html lang="zh"> <head> <meta cha ...

  10. 解决-bash: fork: retry: Resource temporarily unavailable (修改最大线程数)

    错误提示的本质是Linux操作系统无法创建更多进程,导致出错.因此要解决这个问题需要修改Linux允许创建更多的进程. 方案一: cat /etc/security/limits.conf echo ...