nyoj 239 月老的难题 【二分匹配之匈牙利】
来源:互联网 发布:python 入门pdf 编辑:程序博客网 时间:2024/04/28 18:05
月老的难题
时间限制: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) - 输出
- 对每组测试数据,输出最多可能促成的幸福家庭数量
- 样例输入
13 41 11 32 23 2
- 样例输出
2
这道题, 用邻接矩阵TL, 得用邻接表
代码(链式前向星):
#include <stdio.h>#include <string.h>#include <algorithm>#define M 20005using namespace std;struct node{int to, next;}s[M];int head[M], res[555], n;bool vis[555];int find(int u){int i;for(i = head[u]; i != -1; i = s[i].next){int temp = s[i].to;if(!vis[temp]){vis[temp] = 1;if(res[temp]== 0||find(res[temp])){res[temp] = u;return true;}}}return false;}int main(){//freopen("stdin.txt", "r", stdin);int t, k;scanf("%d", &t);while(t --){scanf("%d%d", &n, &k);memset(res, 0, sizeof(res));memset(head, -1, sizeof(head));int a, b;for(int i = 0; i < k; i ++){scanf("%d%d", &a,&b);s[i].to = b;s[i].next = head[a];head[a] = i;}int ans = 0;for(int i = 1; i <= n; i ++){memset(vis, 0, sizeof(vis));if(find(i)) ++ans;}printf("%d\n", ans);}}
用vector内存有点大
#include <stdio.h>#include <string.h>#include <vector>#define M 555using namespace std;vector <int > map[M];int vis[M], res[M];int n;int find(int a){int i;for(i = 0; i < map[a].size(); i ++){if(!vis[map[a][i]]){vis[map[a][i]] = 1;if(res[map[a][i]] == 0||find(res[map[a][i]])){res[map[a][i]] = a;return 1;}}}return 0;}int main(){int t, k;scanf("%d", &t);while(t --){scanf("%d%d", &n, &k);int i;memset(map, 0, sizeof(map));memset(res, 0, sizeof(res));int a, b, ans = 0;for(i = 0; i < k; i ++){scanf("%d%d", &a, &b);map[a].push_back(b);}for(i = 1; i <= n; i ++){memset(vis, 0,sizeof(vis));if(find(i)) ++ans;}printf("%d\n", ans);}return 0;}
0 0
- nyoj 239 月老的难题 【二分匹配之匈牙利】
- 二分图匹配算法之匈牙利算法模板 hdoj1083 nyoj月老的难题
- nyoj 239 月老的难题 二分图最大匹配(匈牙利算法)
- nyoj-239 月老的难题 (二分图匹配—匈牙利算法 && 网络流—Dinic算法)
- nyoj 239 月老的难题 【二分图&&最大匹配&&匈牙利算法】
- NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)
- nyoj 239 月老的难题 (最大二分图匹配匈牙利算法)
- NYOJ - 239 - 月老的难题 ( 二分图最大匹配 匈牙利算法 )
- NYOJ 239 月老的难题(二分图匹配)
- NYOJ 239 月老的难题(二分图最大匹配)
- nyoj 239 月老的难题<二分图匹配>
- NYoj 239 :月老的难题(二分图最大匹配)
- NYOJ 239 月老的难题(最大二分图匹配)
- NYOJ 月老的难题 (最大二分图匹配,匈牙利算法)
- NYOJ239 月老的难题 【二分图最大匹配·匈牙利】
- 二分匹配 月老的难题
- nyoj 239 月老的难题(匈牙利算法+邻接表)
- nyoj 239 月老的难题(匈牙利算法)
- EF增删查改,获取翻页及一对多关系保存与读取的通用示例代码
- iOS xcode6最新提交app方法
- 好的用户界面-界面设计的一些技巧
- MySQL常见问题分析及定位
- 神途开服表神途发布网活动界面
- nyoj 239 月老的难题 【二分匹配之匈牙利】
- 【内省之】BeanUtils工具包的使用
- 【bzoj 1826&1528】: [JSOI2010]缓存交换
- 项目管理系统问题记录(1)
- Java 单例模式详解
- php 开发调试阶段记录日志
- 电子竞技游戏市场概论
- Objective-C_实例变量可见度和⽅法
- C陷阱与缺陷读书笔记