月老的难题

时间限制: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
来源
经典题目
上传者

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 月老的难题 【二分图最大匹配&#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. iframe跨域与session失效问题

    何为跨域跨域session/cookie? 也就是第三方session/cookie.第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会 ...

  2. Android GUI之View事件处理(二)

    在上篇文章中,我们分析了View的事件处理过程,当然这里的View是指基本的View.当View接收到Touch事件时,首先会调用dispacheTouchEvent方法,在这个方法中会调用OnTou ...

  3. leetcode 二分查找 Search in Rotated Sorted ArrayII

    Search in Rotated Sorted Array II Total Accepted: 18500 Total Submissions: 59945My Submissions Follo ...

  4. Visual Tree

    1.GetVisualParent public static T GetVisualParent<T>(DependencyObject obj) where T : Dependenc ...

  5. (转)NGUI制作转圈的技能CD特效

    在技能图标上面放个半透明的精灵,用来做技能冷却的特效,如下图所示,我就用NGUI中的图标来带代替. NGUI制作转圈的技能CD特效 然后修改一下特效的精灵类型,它是在技能图标上面悬浮半透明可旋转的精灵 ...

  6. (剑指Offer)面试题61:按之字形顺序打印二叉树

    题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路: 按照广度优先遍历来遍历二叉树,但是需要 ...

  7. VB.NET版机房收费系统---外观层怎样写

    外观设计模式.<大话设计模式>第103页具体解说,不记得这块知识的小伙伴能够翻阅翻阅,看过设计模式,敲过书上的样例,仅仅是学习的第一步,接着,假设在我们的项目中灵活应用,把设计模式用出花儿 ...

  8. HDU1698:Just a Hook(线段树区间更新)

    Problem Description In the game of DotA, Pudge’s meat hook is actually the most horrible thing for m ...

  9. git多仓库管理

    使用git建立多仓库管理 以下操作为命令行下操作 一:先创建服务器端口,总仓库和子仓库: ssh git@192.168.1.110        连接git服务器 输入密码 mkdir iOSPro ...

  10. mv命令(转)

    原文:http://www.cnblogs.com/peida/archive/2012/10/27/2743022.html mv命令是move的缩写,可以用来移动文件或者将文件改名(move (r ...