标签:
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