• 题目239
  • 题目信息
  • 运行结果
  • 本题排行
  • 讨论区

月老的难题

时间限制: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
3 4
1 1
1 3
2 2
3 2
样例输出
2
来源
经典题目
上传者
张云聪

第一次做二分匹配类的题型  上次接触应该是上个星期数学建模老师讲了一些定义  听得马马虎虎。。

今天又仔细看了看  匈牙利算法求解最大匹配

也就是三个步骤

⑴置M为空
⑵找出一条增广路径P,通过异或操作获得更大的匹配M’代替M
⑶重复⑵操作直到找不出增广路径为止

由于这道题男女的编号都是从1开始 所以我把女生的+n 用来区别

#include <stdio.h>
#include <vector>
#include<string.h>
using namespace std;
vector<int>map[505];
bool vis[1010];
int head[1010];
//判断能否找到从x开始的增广路
bool dfs(int x)
{for(int i=0;i<map[x].size();i++){if(!vis[map[x][i]]){vis[map[x][i]]=true;if(head[map[x][i]]==0||dfs(head[map[x][i]])){head[map[x][i]]=x;return true;}}}return false;
}
int main()
{int ncase;scanf("%d",&ncase);while(ncase--){int n,k;memset(head,0,sizeof(head));memset(map,0,sizeof(map));scanf("%d %d",&n,&k);for(int i=0;i<k;i++){int a,b;scanf("%d %d",&a,&b);map[a].push_back(b+n);}int ans=0;for(int i=1;i<=n;i++){memset(vis,false,sizeof(vis));if(dfs(i))ans++;}printf("%d\n",ans);}return 0;
}

nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)相关推荐

  1. 最短路径的Dijkstra算法(邻接表)

    原文:http://blog.csdn.net/axiqia/article/details/50984464 描述 以邻接表作为存储结构实现,求解从给定源点到给定结束点的最短路径. 输入 从1开始表 ...

  2. nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  3. NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  4. nyoj239 月老的难题 二分图 匈牙利算法

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  5. NYOJ239 月老的难题 二分图最大匹配(前向星)

    题意: 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成 ...

  6. nyoj239月老的难题

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  7. 匈牙利算法——最大匹配问题详解

    2017年中兴提前批校招,就考了一题匈牙利算法. 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的 ...

  8. NYoj 239 :月老的难题(二分图最大匹配)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  9. 匈牙利算法——最大匹配问题详解(附模板题)

    基本概念转自  https://blog.csdn.net/dengheCSDN/article/details/77619308 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名. ...

最新文章

  1. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)
  2. 2018/8/28-29 Some metaheuristics should be simplified
  3. C#textbox只能输入数字和英文句号
  4. 计算机常见知识获取方法,计算机信息处理技术基础知识
  5. 去除a链接+java正则_JavaScript实现正则去除a标签并保留内容的方法【测试可用】...
  6. ace unlock 苹果解锁_Apple Watch将支持指纹识别功能?苹果最新专利曝光
  7. (一)Linux基础(1)
  8. 日期处理一之NSLalendar的使用
  9. 常用自动化框架简单的分析与介绍
  10. oracle之高级子查询1
  11. 第一百三十八期:37 个MySQL数据库小知识,为面试做准备
  12. 数据结构之排序算法:基数排序
  13. Sublime Text 3 快捷键及使用技巧
  14. dpkg: error: dpkg status database is locked by another process 解决方法
  15. Android HID触摸屏驱动怎么开发
  16. win10天气是英文的
  17. 常见错误:无效的文件dsn
  18. 伪标签+html,伪标签(Pseudo-Labelling)介绍:一种半监督机器学习技术
  19. 求一个3*3的整形矩阵对角线元素之和
  20. 后端 php mysql_搭建并部署PHP + MySQL后端环境

热门文章

  1. (超详细)MapReduce工作原理及基础编程
  2. 如何将宿主机工作文件夹映射到vmware虚拟机内
  3. 这四十年来的香港歌坛在唱些什么,“南中国听歌最多”的数据分析师带你一探究竟...
  4. Vue定时刷新页面数据
  5. python怎么读是啥意思-python怎么读?python的含义和读音!
  6. 十分钟手把手教你设计简单易用的组件级考试题(单选、多选、填空、图片),建议收藏
  7. 关于网络游戏的影响(腾讯游戏)
  8. 羊了个羊, 听说这游戏很难
  9. python摄像头人脸识别小程序 开门,OpenCV3-Python人脸识别方法—基于摄像头
  10. java bidi_Java Bidi toString()用法及代码示例