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

最新文章

  1. Android 自定义ToolBar详细使用
  2. Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
  3. 微软Face API体验——人脸检测
  4. poj 3621 二分+spfa判负环
  5. HTML5 UI框架Kendo UI Web教程:创建自定义组件(三)
  6. hdu 2108:Shape of HDU(计算几何,判断多边形是否是凸多边形,水题)
  7. SQLite.net发布后找不到&quot;SQLite.Interop.dll&quot;的问题
  8. LNMP 环境发布项目
  9. CaronteFX插件简介
  10. 应用程序域(Application Domain)
  11. lua与 object-C 通信
  12. Codeforces Round #274 (Div. 1) C. Riding in a Lift 前缀和优化dp
  13. 使用.htaccess实现apache URL重定向
  14. 数学之路-python计算实战(20)-机器视觉-拉普拉斯算子卷积滤波
  15. 数据结构- 串的模式匹配算法:BF和 KMP算法
  16. Python学习之数据类型
  17. 为什么String类是不可变的?
  18. Windows下Nginx实现负载均衡
  19. Windows Server 2016-DNS客户端新增功能
  20. SQLServer之创建非聚集索引

热门文章

  1. 解决更新到os x10.11后openssl头文件无法找到的问题
  2. java代码(处理json串)
  3. codeforces Gym 100338E Numbers (贪心,实现)
  4. poj2312Battle City BFS
  5. js 获取当前URL信息
  6. 修改visual studio setup 安装顺序(解决新版安装包无法自动移除老版本程序的问题)
  7. Bootstrap历练实例:超小的按钮
  8. Linux网卡设置为网桥模式
  9. 将Xcode的本地代码push到github仓库上
  10. Mac 输入法小技巧