标签:
7 0: (3) 4 5 6 1: (2) 4 6 2: (0) 3: (0) 4: (2) 0 1 5: (1) 0 6: (2) 0 1 3 0: (2) 1 2 1: (1) 0 2: (1) 0
5 2
/*****************************************************************************
考察知识点:匈牙利算法模板,二分图最大独立集=顶点数-最大匹配数
题意不好理解是关键。。。。
这道题的疑问之处在于题意(求最大匹配数 还是 所有的人组成了多少
的组合,有关系的并为一组 ?),
另外一点是数据的范围,有人说最大到500,到底为何?
*****************************************************************************/
#include<stdio.h>
#include<string.h>
#define inf 500
int used[inf],girl[inf];
int line[inf][inf];
int n,m;
int find(int x)
{
int j;
for(j=0;j<n;++j)
{
if(!used[j]&&line[x][j])
{
used[j]=1;
if(!girl[j]||find(girl[j]))
{
girl[j]=x;
return 1;
}
}
}
return 0;
}
int main()
{
int a,b;
while(~scanf("%d",&n))
{
memset(used,0,sizeof(used));
memset(line,0,sizeof(line));
memset(girl,0,sizeof(girl));
for(int i=0;i<n;++i)
{
scanf("%d: (%d)",&a,&m);
while(m--)
{
scanf("%d",&b);
line[a][b]=1;
}
}
int count=0;
for(int i=0;i<n;++i)
{
memset(used,0,sizeof(used));
if(find(i))
count++;
}
printf("%d\n",n-count/2);
}
return 0;
} 匈牙利算法模板 hdu 1068 题意不清。。。。(数据范围太过随意。。)
标签:
原文地址:http://blog.csdn.net/ice_alone/article/details/44117561