月老的难题
时间限制: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


刚学二分图,先拿道水题来试下。
代码:

#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define MM(x) memset(x,0,sizeof(x))
#define MMINF(x) memset(x,INF,sizeof(x))
typedef long long LL;
const double PI=acos(-1.0);
const int N=20010;
struct info
{int to;int pre;
}E[N];
int head[N],cnt;
int match[N],vis[N];
void init()
{memset(head,-1,sizeof(head));cnt=0;memset(match,-1,sizeof(match));
}
void add(int s,int t)
{E[cnt].to=t;E[cnt].pre=head[s];head[s]=cnt++;
}
int dfs(int u)
{for (int i=head[u]; i!=-1; i=E[i].pre){int v=E[i].to;if(!vis[v])//没被访问过{vis[v]=1;//标记访问if(match[v]==-1||dfs(match[v]))//若没之前被匹配过或之后可以放到增广路里就合法{match[v]=u;//路径交换取反match[u]=v;//路径交换取反return 1;//成功找到增广路}}}return 0;
}
int main(void)
{int tcase,i,a,b,n,k;scanf("%d",&tcase);while (tcase--){init();scanf("%d%d",&n,&k);for (i=0; i<k; i++){scanf("%d%d",&a,&b);add(a,b+n);}int r=0;for (i=1; i<=n; i++){if(match[i]==-1){MM(vis);if(dfs(i))//这个点出发找到增广路r++;}   }printf("%d\n",r);}return 0;
}

NYOJ——239月老的难题(二分图最大匹配)相关推荐

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

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

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

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

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

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

  4. nyoj 239 月老的难题

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=239 简单的二分匹配,不过这道题很怪,矩阵就是tle,临界表200多,很无语. 以前做个, ...

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

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

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

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

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

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

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

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

  9. 问题测试数据NYOJ 478 月老的难题 (1)解题报告

    查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 间时制限: 1000 ms  |  存内制限: 65535 KB 难度: 3 月老近最遇到了 ...

最新文章

  1. 写一个测试工具类,只在debug时运行,而release时自动移除代码,适用于gradle项目(idea,android studio等)
  2. 统计学习笔记(1)——统计学习方法概论
  3. 日常生活小技巧 -- Notepad++一次删除带指定关键字的行
  4. 记录些实用的linux指令串
  5. Symmetric multiprocessing(SMP)下的spinlock
  6. 为什么我们需要使用Pandas新字符串Dtype代替文本数据对象
  7. 【前端】这可能是你看过最全的css居中解决方案了~
  8. java oxm_spring使用OXM进行对象XML映射解析
  9. 如何有效的为Windows XP减肥
  10. light7在微信ios下input点击困难
  11. JavaScript -- DOM树
  12. [BX]和loop指令06 - 零基础入门学习汇编语言28
  13. Python 分词 第三方模块
  14. “开源和商业化不能形成对立!”
  15. 自动化运维工具——ansile详解
  16. 计算机桌面有个方框,电脑桌面总出现蓝色框怎么办
  17. iview中Page分页组件添加首页尾页按钮
  18. 【深入理解C++】头文件防卫式声明
  19. 中国象棋局面识别 -3. 棋谱字符串生成
  20. win10开机启动文件夹路径

热门文章

  1. iPhone6/6S的适配
  2. 带你读懂《深入理解计算机系统》开篇
  3. 自动化控制重要国际学术会议
  4. linux下迅雷的替代
  5. Android触摸屏突然没反应了
  6. java基础之Integer和Long
  7. 路由器设备选型参照天梯
  8. rtx3080ti参数 rtx3080ti什么水平 rtx3080ti评测
  9. 涉密计算机默认安全用户名,机密级涉密计算机的系统登录如采用用户名加口令的方式,则系统口令更换周期不得长于 - 作业在线问答...
  10. 二叉平衡树的基本操作(完整代码)