Girls and Boys(poj 1466)
Posted Cola
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Girls and Boys(poj 1466)相关的知识,希望对你有一定的参考价值。
题目描述:
给出一系列男女配对意愿信息。求一个集合中的最大人数,满足这个集合中两两的人不能配对。
/* 二分图的最大独立集 因为没有给出具体的男生和女生,所以可以将数据扩大一倍,即n个男生,n个女生, 根据定理,最大独立集=总数-匹配数(本题应该除以2) */ #include<cstdio> #include<iostream> #include<cstring> #define N 510 using namespace std; int a[N][N],used[N],belong[N],n; bool find(int i) { for(int j=1;j<=n;j++) if(a[i][j]&&!used[j]) { used[j]=1; if(!belong[j]||find(belong[j])) { belong[j]=i; return true; } } return false; } void work() { for(int i=1;i<=n;i++) { int x,m;scanf("%d: (%d)",&x,&m);x++; for(int j=1;j<=m;j++) { int y;scanf("%d",&y);y++; a[x][y]=a[y][x]=1; } } int tot=0; for(int i=1;i<=n;i++) { memset(used,0,sizeof(used)); if(find(i))tot++; } printf("%d\n",n-tot/2); } int main() { while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); memset(belong,0,sizeof(belong)); work(); } return 0; }
以上是关于Girls and Boys(poj 1466)的主要内容,如果未能解决你的问题,请参考以下文章
Girls and Boys POJ - 1466 (二分图最大独立集)
POJ 1466 Girls and Boys (匈牙利算法 最大独立集)