NYOJ239 月老的难题 【二分图最大匹配·匈牙利】
月老的难题
- 描写叙述
-
月老准备给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
- 来源
- 经典题目
- 上传者
-
userid=%E5%BC%A0%E4%BA%91%E8%81%AA" style="text-decoration:none; color:rgb(55,119,188)">张云聪
题解:用邻接矩阵TLE,换成链式前向星才过。匈牙利模板题。
#include <stdio.h>
#include <string.h>
#define maxn 505
#define maxm 10010 int n, k, id;
int head[maxn], B[maxn];
bool vis[maxn];
struct Node {
int v, next;
} E[maxm]; void addEdge(int u, int v) {
E[id].v = v; E[id].next = head[u];
head[u] = id++;
} bool findPath(int x) {
int i, v;
for(i = head[x]; i != -1; i = E[i].next) {
v = E[i].v;
if(!vis[v]) {
vis[v] = true;
if(!B[v] || findPath(B[v])) {
B[v] = x; return true;
}
}
}
return false;
} int MaxMatch() {
int ans = 0;
for(int i = 1; i <= n; ++i) {
memset(vis, 0, sizeof(bool) * (n + 1));
if(findPath(i)) ++ans;
}
return ans;
} int main() {
// freopen("stdin.txt", "r", stdin);
int t, u, v;
scanf("%d", &t);
while(t--) {
scanf("%d%d", &n, &k);
memset(head, -1, sizeof(int) * (n + 1));
memset(B, 0, sizeof(int) * (n + 1));
id = 0;
while(k--) {
scanf("%d%d", &u, &v);
addEdge(u, v);
}
printf("%d\n", MaxMatch());
}
return 0;
}
NYOJ239 月老的难题 【二分图最大匹配·匈牙利】的更多相关文章
- 二分图最大匹配:匈牙利算法的python实现
二分图匹配是很常见的算法问题,一般用匈牙利算法解决二分图最大匹配问题,但是目前网上绝大多数都是C/C++实现版本,没有python版本,于是就用python实现了一下深度优先的匈牙利算法,本文使用的是 ...
- 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题
题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...
- "《算法导论》之‘图’":不带权二分图最大匹配(匈牙利算法)
博文“二分图的最大匹配.完美匹配和匈牙利算法”对二分图相关的几个概念讲的特别形象,特别容易理解.本文介绍部分主要摘自此博文. 还有其他可参考博文: 趣写算法系列之--匈牙利算法 用于二分图匹配的匈牙利 ...
- 二分图最大匹配(匈牙利算法)简介& Example hdu 1150 Machine Schedule
二分图匹配(匈牙利算法) 1.一个二分图中的最大匹配数等于这个图中的最小点覆盖数 König定理是一个二分图中很重要的定理,它的意思是,一个二分图中的最大匹配数等于这个图中的最小点覆盖数.如果你还不知 ...
- 【模板】二分图最大匹配(匈牙利算法)/洛谷P3386
题目链接 https://www.luogu.com.cn/problem/P3386 题目大意 给定一个二分图,其左部点的个数为 \(n\),右部点的个数为 \(m\),边数为 \(e\),求其最大 ...
- [hihoCoder] #1122 : 二分图二•二分图最大匹配之匈牙利算法
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上一回我们已经将所有有问题的相亲情况表剔除了,那么接下来要做的就是安排相亲了.因为过年时间并不是很长,所以姑姑希望能够尽可 ...
- 无权二分图最大匹配 HDU2063 匈牙利算法 || Hopcroft-Karp
参考两篇比较好的博客 http://www.renfei.org/blog/bipartite-matching.html http://blog.csdn.net/thundermrbird/art ...
- POJ1469 COURSES 【二分图最大匹配·HK算法】
COURSES Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 17777 Accepted: 7007 Descript ...
- 【hihocoder 1122】二分图二•二分图最大匹配之匈牙利算法
[Link]:https://hihocoder.com/problemset/problem/1122 [Description] [Solution] 二分图匹配,匈牙利算法模板题; 这里我先把染 ...
随机推荐
- 让IE6/IE7/IE8支持HTML5标签的js代码
让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...
- WPF DataTrigger的两个用法
1.用在textbox等输入控件上,验证输入是否合法.首先定义一个Converter, 2.Xaml里面这样子写,意思是输入的数字,如果小于100则显示为红色. 3.combox等列表控件里面,也可以 ...
- 转:好用 Eclipse插件收集与说明
http://developer.51cto.com/art/201007/214478.htm
- FM同步数据库中结构已经发生变化的表
接触Cognos很久了,最近遇到一个小问题. 在FM模型设计的过程中,有一张表jd_f_order.之后为了更全面的分析这个数据,在这个事实表中引入了一个新的字段商品类型字段,结构如图 但是由于jd_ ...
- 向量的表示及协方差矩阵 (PCA的理论基础)
原文:http://blog.csdn.net/songzitea/article/details/18219237 引言 当面对的数据被抽象为一组向量,那么有必要研究一些向量的数学性质.而这些数学性 ...
- Android-Bundle认知、和Intent的差别
不时的回过头来看看自己的Andriod学习.实践之路,总发现有些曾经不明确的,如今清楚缘由.也会发现一些之前没怎么关注的.如今看到了 ,很想去深刻了解的. 比方:Bundle. 在一个Activity ...
- Access2013 Mssql2012 数据库连接字符串
直接在调用的地方设置 // access 2003 DBConStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Ap ...
- 安装Ubuntu 桌面版 12.04 LTS 过程之记录
[下载ISO文件刻录到光盘上] 1.首先从http://www.ubuntu.com/download/desktop/zh-CN找到合适的版本下载. 2.完毕后,将ISO文件放好.然后启动nero, ...
- webstorm激活+汉化教程
1.安装教程+激活 输入的激活网址: http://idea.imsxm.com/ 2.汉化教程 软件适用于:webstorm2017.2以及以上,如有需要可直接加本人QQ 1940694428.
- ERROR 1820 (HY000): You must SET PASSWORD before executing this statement
Linux rpm方式安装完MySQL之后 mysql>SET PASSWORD = PASSWORD('newpasswd');