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 (二分图最大独立集)

Girls and Boys(poj 1466)

POJ 1466 Girls and Boys (匈牙利算法 最大独立集)

hdu-1068&&POJ1466 Girls and Boys---最大独立集

POJ Girls and Boys (最大独立点集)

Girls and Boys