题意:n个ren m个棍子 每个棍子可以与i个人结合 问最大有多少个结合
#include<iostream>
#include<cmath>
using namespace std;
int map[111][111];
int fa[111];
int v[111];
int n,m;
int dfs(int x)
{
for(int i=1;i<=n;i++)
{
if(map[x][i]&&!v[i])//回溯时i不能再匹配
{
v[i]=1;
if(!fa[i]||dfs(fa[i]))
{
fa[i]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int sum,i,t,x;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,0,sizeof(map));
for(i=1;i<=m;i++)
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&x);
map[i][x]=1;
}
}
sum=0;
memset(fa,0,sizeof(fa));
for(i=1;i<=m;i++)
{
memset(v,0,sizeof(v));
if(dfs(i))
sum++;
}
printf("%d\n",sum);
}
return 0;
}
hdu 1179 最大匹配,码迷,mamicode.com
时间: 2024-10-10 02:27:30