zoukankan      html  css  js  c++  java
  • 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-tot/2);
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            memset(a,0,sizeof(a));
            memset(belong,0,sizeof(belong));
            work();
        }
        return 0;
    }
  • 相关阅读:
    安装VC6.0遇到的问题
    开发、测试环境
    OPENGL绘制文字
    C++实现文件关联
    MFC多国语言——配置文件
    MFC 资源记录
    如何解决——汉化英文界面出现乱码
    项目配置——添加第三方资源
    队列&生产者消费者模型
    抢票小程序
  • 原文地址:https://www.cnblogs.com/harden/p/5967695.html
Copyright © 2011-2022 走看看