月老的难题

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

#include<stdio.h>
#include<string.h>
#define N 10010
#define M 510
int num;
int link[M];
int head[M],next[N],key[N];
bool use[M];void add(int u,int v)
{key[num]=v;next[num]=head[u];head[u]=num++;
}bool  find(int u)
{int i,temp;for(i=head[u];i!=-1;i=next[i]){temp=key[i];if(!use[temp]){use[temp]=true;if(link[temp]==-1||find(link[temp])){link[temp]=u;return true;}}}return false;
}int main()
{int T,i,a,b,n,k,ans;scanf("%d",&T);while(T--){memset(link,-1 ,sizeof(link));memset(head,-1,sizeof(head));num=0;scanf("%d%d",&n,&k);for(i=0;i<k;++i){scanf("%d%d",&a,&b);add(a,b);}ans=0;for(i=1;i<=n;++i){memset(use,false,sizeof(use));if(find(i))ans++;}printf("%d\n",ans);}return 0;
}

真想骂娘啦,一个变量搞错,WA了两个小时,还是对算法的不够熟悉造成的。

这个题的特别之处是男女编号相同,在构建增广路的时候,比较特别:用hash图存储了

转载于:https://www.cnblogs.com/zibuyu/archive/2013/03/17/2964981.html

nyoj239 月老的难题 二分图 匈牙利算法相关推荐

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

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

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

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

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

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

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

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

  5. nyoj239月老的难题

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

  6. 二分图-匈牙利算法模板

    二分图就不赘述了,我在知识资料整理有相关资料. .最大匹配  .最小路径覆盖  .最小点覆盖  .最大独立集 最大匹配:二分图中边集最大的那个匹配 最小路径(边)覆盖:用尽量小的不想交简单路径覆盖有向 ...

  7. 图论 —— 二分图 —— 匈牙利算法

    [基本概念] 1.交替路 从一个未匹配点出发,依次经过 非匹配边.匹配边.非匹配边- 形成的路径 2.增广路 定义:设 M 为二分图 G 已匹配边的集合,若 P 是图 G 中一条连通两个未匹配点的路径 ...

  8. [SinGuLaRiTy] 二分图匈牙利算法

    [SinGuLaRiTY-1019] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 二分图 二分图是图论中一种特殊的图形.顾名思义,二分图G ...

  9. 染色法判定二分图 匈牙利算法

    染色法判定二分图 思路:相邻的点染不同颜色 看能不能染完 如果过程中出现相邻点相同颜色,就不可以 注意:需要遍历n个点 看此点是否被染色过 如果没有就进行一次dfs或bfs 二分图:可以把点分成两个集 ...

最新文章

  1. nagios监控mysql主从复制
  2. 手动删除3389连接记录
  3. 最长回文子串python_最长回文子串(Python)
  4. python消息订阅_python rabbitmq消息发布订阅
  5. 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)
  6. 野生前端的数据结构练习(10)希尔排序,归并排序,快速排序
  7. Delphi更高效率的编程方式的思考【一】
  8. Vue模板语法---vue工作笔记0003
  9. [建议]我对博客园的发展的一点想法
  10. 安卓苹果一键秒改运动步数方法
  11. 这台计算机无法连接usb,爱思助手无法连接或者连接超时解决办法
  12. python海龟库命令_turtle库常用命令
  13. Flink SQL regular join 如何设置状态过期
  14. 文本处理强调的是使用计算机对文本中,【判断题】文本处理强调的是使用计算机对文本中所含文字信息的形、音、义等进行分析和处理。文语转换(语音合成)不属于文本处理。...
  15. 一阶导数和二阶导数的二阶/四阶中心差分格式
  16. 二叉树的顺序存储和三种遍历(二)
  17. Gprs通信协议服务器,GPRS协议简介
  18. Android根据音量大小绘制心电图(附源码)
  19. 说极路由牛逼的人们,你们用过Tomato DualWAN吗?(一)
  20. android+微信语音,android 仿微信按住语音说话(语音聊天)源码下载

热门文章

  1. 学计算机编程200字感想,计算机学习心得体会
  2. matlab plot errorbar,如何为MATLAB errorbar plot的点和垂直线设置不同的图例?
  3. 华为桌面云 服务器可以虚拟多少,【华为桌面云】案例:单服务器环境且只有两块本地SATA盘创建虚拟机非常慢...
  4. 支持nvme的linux_Linux nvme驱动初探
  5. apache geode项目结构_Apache Flink-基于Java项目模板创建Flink应用(流计算和批计算)...
  6. php毕业设计遇到的问题,常见问题_php毕业设计_php课程设计_php大作业_原创作品下载网...
  7. 【渝粤题库】陕西师范大学151203 初级会计学作业(笔试题型)
  8. 【渝粤题库】国家开放大学2021春2745农村经济管理题目
  9. 跳转指令微型计算机,哪种类型的汇编程序跳转指令最有用?
  10. python 验证码_4行Python代码生成图像验证码