月老的难题

时间限制: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

此篇只是纯属的记录:
看别人的文章学习http://blog.csdn.net/dark_scope/article/details/8880547

AC代码:

//邻接表+匈牙利算法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月老的难题相关推荐

  1. nyoj239 月老的难题 二分图 匈牙利算法

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  2. nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  3. nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)

    题目239 题目信息 运行结果 本题排行 讨论区 月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. ...

  4. NYOJ239 月老的难题 二分图最大匹配(前向星)

    题意: 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成 ...

  5. NYOJ——239月老的难题(二分图最大匹配)

    月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家, ...

  6. NYOJ 题目239 月老的难题 (二分图最大匹配-匈牙利算法模板)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  7. NYoj 239 :月老的难题(二分图最大匹配)

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  8. nyoj 239 月老的难题 【二分匹配之匈牙利】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

  9. nyoj 月老的难题【最大匹配】

    月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...

最新文章

  1. windows(xshell)免密码登录
  2. 【Linux】17.Ubuntu16.04 系统添加网关和DNS的两种方式
  3. c++ 获取线程id_高效获取当前线程的 id
  4. IT人员健康信号之舌苔
  5. pcs7更改项目计算机名时出错,PCS7 C/S报警问题-工业支持中心-西门子中国
  6. xml学习总结(三)
  7. JavaScript计算两个日期相差天数/分钟/小时
  8. 执行计划之CONCATENATION
  9. ps抠图头发丝 智能半径
  10. ERP财务管理模块包括什么
  11. android备份recovery,一键备份手机原版Recovery 刷机无鸭梨
  12. 数字逻辑复习——触发器
  13. 网络中常用的各种协议名称(中英文)和具体含义
  14. 中美跨境电商贸易投资云洽会成功举办;TT Shop和TTforBusiness将互通;PhonePe月破20亿...|洞悉跨境
  15. matlab绘制三维隐函数图像
  16. SkyWalking--告警--使用/教程/示例
  17. android6.0-nexus5 mac上docker 编译刷机
  18. epoll_create1与epoll_create区别
  19. 全面升级!网易易盾发布设备DNA指纹系统
  20. GlboalMapper20如何把mbt转为tif

热门文章

  1. NLPIR智能语义:大数据精准挖掘是信息化发展趋势
  2. Libvirsh 问题:GLib-WARNING **: gmem.c:483: custom memory allocation vtable not supported
  3. Android--Retrofit+RxJava(二)
  4. Polya原理的应用经典实例
  5. Java中创建对象的四种方式
  6. jsp上传下载+SmartUpload插件上传
  7. 杭州中联高级技术培训中心CCNA实验手册
  8. 2021-08-25路演的反馈
  9. feedback for last final year project meeting
  10. 你真的会使用assert吗?