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
-
此篇只是纯属的记录:
看别人的文章学习http://blog.csdn.net/dark_scope/article/details/8880547AC代码:
//邻接表+匈牙利算法bfs实现 #include <stdio.h> #include <string.h> #include <stdlib.h>const int max_n = 505; int link[max_n]; char used[max_n]; struct Node{int to;Node *next; }G[max_n];int dfs(int i) {for(Node *j = G[i].next; j != NULL; j=j->next) {int to = j->to;if(used[to] == 0) {used[to] = 1;if(link[to] == 0 || dfs(link[to])) {//没有被配对||别人腾出 link[to] = i;return 1;}}}return 0; }int count(int n) {int ans = 0, i = 1;for(; i <= n; i++) {memset(used, 0, sizeof(used));//特别注意 if(dfs(i)) ans++;}return ans; }void add(int x, int y) {Node *np = NULL, *gp = &G[x];char flag = 1;np = (Node *)malloc(sizeof(Node));if(np == NULL) ;//平时要有while(gp->next != NULL) {if(gp->to == y) {//因为要去重,所以干脆用尾插法flag = 0;break;}gp = gp->next;}if(flag) {np->to = y;np->next = NULL;gp->next = np;} }int main() {int t, n, k, i;scanf("%d", &t);while(t--) {int x, y;scanf("%d%d", &n, &k);memset(G, 0, sizeof(Node)*(n+1));//主要是初始化next为NULLmemset(link, 0, sizeof(link));for(i = 0; i < k; i++) {scanf("%d%d", &x, &y);add(x,y);}printf("%d\n", count(n));}return 0; }
nyoj239月老的难题相关推荐
- nyoj239 月老的难题 二分图 匈牙利算法
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)
题目239 题目信息 运行结果 本题排行 讨论区 月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. ...
- NYOJ239 月老的难题 二分图最大匹配(前向星)
题意: 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成 ...
- NYOJ——239月老的难题(二分图最大匹配)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家, ...
- NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- NYoj 239 :月老的难题(二分图最大匹配)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- nyoj 239 月老的难题 【二分匹配之匈牙利】
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- nyoj 月老的难题【最大匹配】
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
最新文章
- windows(xshell)免密码登录
- 【Linux】17.Ubuntu16.04 系统添加网关和DNS的两种方式
- c++ 获取线程id_高效获取当前线程的 id
- IT人员健康信号之舌苔
- pcs7更改项目计算机名时出错,PCS7 C/S报警问题-工业支持中心-西门子中国
- xml学习总结(三)
- JavaScript计算两个日期相差天数/分钟/小时
- 执行计划之CONCATENATION
- ps抠图头发丝 智能半径
- ERP财务管理模块包括什么
- android备份recovery,一键备份手机原版Recovery 刷机无鸭梨
- 数字逻辑复习——触发器
- 网络中常用的各种协议名称(中英文)和具体含义
- 中美跨境电商贸易投资云洽会成功举办;TT Shop和TTforBusiness将互通;PhonePe月破20亿...|洞悉跨境
- matlab绘制三维隐函数图像
- SkyWalking--告警--使用/教程/示例
- android6.0-nexus5 mac上docker 编译刷机
- epoll_create1与epoll_create区别
- 全面升级!网易易盾发布设备DNA指纹系统
- GlboalMapper20如何把mbt转为tif
热门文章
- NLPIR智能语义:大数据精准挖掘是信息化发展趋势
- Libvirsh 问题:GLib-WARNING **: gmem.c:483: custom memory allocation vtable not supported
- Android--Retrofit+RxJava(二)
- Polya原理的应用经典实例
- Java中创建对象的四种方式
- jsp上传下载+SmartUpload插件上传
- 杭州中联高级技术培训中心CCNA实验手册
- 2021-08-25路演的反馈
- feedback for last final year project meeting
- 你真的会使用assert吗?