【二分图匹配(最大独立集)】hdu 1068 Girls and Boys

来源:互联网 发布:小米4怎么设置2g网络 编辑:程序博客网 时间:2024/06/10 08:52

http://acm.hdu.edu.cn/showproblem.php?pid=1068

题意:找没有关系的人的最大集合

分析:求最大独立集 
二分图最大独立集 = 节点数 - 二分图最大匹配/2(关系是双向的)

#include<iostream>#include<cstring>#include<cstdio>const int NM=1005;int a[NM][NM],link[NM],flag[NM],n;int Find(int x){for(int i=0;i<n;i++){if(a[x][i]&&!flag[i]){flag[i]=1;if(link[i]==-1||Find(link[i])){link[i]=x;return 1;}}}return 0;}int main(){int i,j,m,t,num,ans;while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a));memset(link,-1,sizeof(link));for(i=0;i<n;i++){scanf("%d: (%d)",&t,&m);for(j=0;j<m;j++){scanf("%d",&num);a[t][num]=1;}}ans=0;for(i=0;i<n;i++){memset(flag,0,sizeof(flag));if(Find(i))ans++;}printf("%d\n",n-ans/2);}return 0;}


原创粉丝点击