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
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 月老的难题 二分图 匈牙利算法相关推荐
- nyoj-239 月老的难题 (二分图匹配—匈牙利算法 网络流—Dinic算法)
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- NYOJ239 月老的难题 二分图最大匹配(前向星)
题意: 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成 ...
- nyoj239 月老的难题 (匈牙利算法,最大匹配,邻接表)
题目239 题目信息 运行结果 本题排行 讨论区 月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. ...
- NYOJ - 239 - 月老的难题 ( 二分图最大匹配 匈牙利算法 )
描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸 ...
- nyoj239月老的难题
月老的难题 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一 ...
- 二分图-匈牙利算法模板
二分图就不赘述了,我在知识资料整理有相关资料. .最大匹配 .最小路径覆盖 .最小点覆盖 .最大独立集 最大匹配:二分图中边集最大的那个匹配 最小路径(边)覆盖:用尽量小的不想交简单路径覆盖有向 ...
- 图论 —— 二分图 —— 匈牙利算法
[基本概念] 1.交替路 从一个未匹配点出发,依次经过 非匹配边.匹配边.非匹配边- 形成的路径 2.增广路 定义:设 M 为二分图 G 已匹配边的集合,若 P 是图 G 中一条连通两个未匹配点的路径 ...
- [SinGuLaRiTy] 二分图匈牙利算法
[SinGuLaRiTY-1019] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 二分图 二分图是图论中一种特殊的图形.顾名思义,二分图G ...
- 染色法判定二分图 匈牙利算法
染色法判定二分图 思路:相邻的点染不同颜色 看能不能染完 如果过程中出现相邻点相同颜色,就不可以 注意:需要遍历n个点 看此点是否被染色过 如果没有就进行一次dfs或bfs 二分图:可以把点分成两个集 ...
最新文章
- nagios监控mysql主从复制
- 手动删除3389连接记录
- 最长回文子串python_最长回文子串(Python)
- python消息订阅_python rabbitmq消息发布订阅
- 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)
- 野生前端的数据结构练习(10)希尔排序,归并排序,快速排序
- Delphi更高效率的编程方式的思考【一】
- Vue模板语法---vue工作笔记0003
- [建议]我对博客园的发展的一点想法
- 安卓苹果一键秒改运动步数方法
- 这台计算机无法连接usb,爱思助手无法连接或者连接超时解决办法
- python海龟库命令_turtle库常用命令
- Flink SQL regular join 如何设置状态过期
- 文本处理强调的是使用计算机对文本中,【判断题】文本处理强调的是使用计算机对文本中所含文字信息的形、音、义等进行分析和处理。文语转换(语音合成)不属于文本处理。...
- 一阶导数和二阶导数的二阶/四阶中心差分格式
- 二叉树的顺序存储和三种遍历(二)
- Gprs通信协议服务器,GPRS协议简介
- Android根据音量大小绘制心电图(附源码)
- 说极路由牛逼的人们,你们用过Tomato DualWAN吗?(一)
- android+微信语音,android 仿微信按住语音说话(语音聊天)源码下载
热门文章
- 学计算机编程200字感想,计算机学习心得体会
- matlab plot errorbar,如何为MATLAB errorbar plot的点和垂直线设置不同的图例?
- 华为桌面云 服务器可以虚拟多少,【华为桌面云】案例:单服务器环境且只有两块本地SATA盘创建虚拟机非常慢...
- 支持nvme的linux_Linux nvme驱动初探
- apache geode项目结构_Apache Flink-基于Java项目模板创建Flink应用(流计算和批计算)...
- php毕业设计遇到的问题,常见问题_php毕业设计_php课程设计_php大作业_原创作品下载网...
- 【渝粤题库】陕西师范大学151203 初级会计学作业(笔试题型)
- 【渝粤题库】国家开放大学2021春2745农村经济管理题目
- 跳转指令微型计算机,哪种类型的汇编程序跳转指令最有用?
- python 验证码_4行Python代码生成图像验证码