nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)
- 题目239
- 题目信息
- 运行结果
- 本题排行
- 讨论区
月老的难题
- 描述
-
月老准备给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
- 来源
- 经典题目
- 上传者
- 张云聪
第一次做二分匹配类的题型 上次接触应该是上个星期数学建模老师讲了一些定义 听得马马虎虎。。
今天又仔细看了看 匈牙利算法求解最大匹配
也就是三个步骤
由于这道题男女的编号都是从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 月老的难题 (匈牙利算法,最大匹配,邻接表)相关推荐
- 最短路径的Dijkstra算法(邻接表)
原文:http://blog.csdn.net/axiqia/article/details/50984464 描述 以邻接表作为存储结构实现,求解从给定源点到给定结束点的最短路径. 输入 从1开始表 ...
- nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- nyoj239 月老的难题 二分图 匈牙利算法
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- NYOJ239 月老的难题 二分图最大匹配(前向星)
题意: 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成 ...
- nyoj239月老的难题
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- 匈牙利算法——最大匹配问题详解
2017年中兴提前批校招,就考了一题匈牙利算法. 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的 ...
- NYoj 239 :月老的难题(二分图最大匹配)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- 匈牙利算法——最大匹配问题详解(附模板题)
基本概念转自 https://blog.csdn.net/dengheCSDN/article/details/77619308 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名. ...
最新文章
- 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)
- 2018/8/28-29 Some metaheuristics should be simplified
- C#textbox只能输入数字和英文句号
- 计算机常见知识获取方法,计算机信息处理技术基础知识
- 去除a链接+java正则_JavaScript实现正则去除a标签并保留内容的方法【测试可用】...
- ace unlock 苹果解锁_Apple Watch将支持指纹识别功能?苹果最新专利曝光
- (一)Linux基础(1)
- 日期处理一之NSLalendar的使用
- 常用自动化框架简单的分析与介绍
- oracle之高级子查询1
- 第一百三十八期:37 个MySQL数据库小知识,为面试做准备
- 数据结构之排序算法:基数排序
- Sublime Text 3 快捷键及使用技巧
- dpkg: error: dpkg status database is locked by another process 解决方法
- Android HID触摸屏驱动怎么开发
- win10天气是英文的
- 常见错误:无效的文件dsn
- 伪标签+html,伪标签(Pseudo-Labelling)介绍:一种半监督机器学习技术
- 求一个3*3的整形矩阵对角线元素之和
- 后端 php mysql_搭建并部署PHP + MySQL后端环境
热门文章
- (超详细)MapReduce工作原理及基础编程
- 如何将宿主机工作文件夹映射到vmware虚拟机内
- 这四十年来的香港歌坛在唱些什么,“南中国听歌最多”的数据分析师带你一探究竟...
- Vue定时刷新页面数据
- python怎么读是啥意思-python怎么读?python的含义和读音!
- 十分钟手把手教你设计简单易用的组件级考试题(单选、多选、填空、图片),建议收藏
- 关于网络游戏的影响(腾讯游戏)
- 羊了个羊, 听说这游戏很难
- python摄像头人脸识别小程序 开门,OpenCV3-Python人脸识别方法—基于摄像头
- java bidi_Java Bidi toString()用法及代码示例