zoukankan      html  css  js  c++  java
  • hdu1068 Girls and Boys --- 最大独立集

    有一个集合男和一个集合女,给出两集合间一些一一相应关系。问该两集合中的最大独立集的点数。

    最大独立集=顶点总数-最大匹配数

    此题中。若(a,b)有关。则(b,a)有关。每个关系算了两次,相当于二分图的两边集合没有分男女。两边都是总人数。

    所以此题中答案应该是 顶点总数-最大匹配数/2


    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<queue>
    const int maxn=510;
    using namespace std;
    
    int mx[maxn],my[maxn],vis[maxn],e[maxn][maxn],n;
    
    int path(int i)
    {
        int j;
        for(j=0;j<n;j++)
        {
            if(e[i][j]&&!vis[j])
            {
                vis[j]=1;
                if(my[j]==-1||path(my[j]))
                {
                    my[j]=i;
                    mx[i]=j;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int hungry()
    {
        int res=0;
        memset(mx,-1,sizeof mx);
        memset(my,-1,sizeof my);
        for(int i=0;i<n;i++)
        {
            if(mx[i]==-1)
            {
                memset(vis,0,sizeof vis);
                res+=path(i);
            }
        }
        return res;
    }
    
    int main()
    {
        int a,b,m,i;
        while(~scanf("%d",&n))
        {
            memset(e,0,sizeof e);
            for(i=0;i<n;i++)
            {
                scanf("%d: (%d)",&a,&m);
                while(m--)
                {
                    scanf("%d",&b);
                    e[a][b]=1;
                }
            }
            printf("%d
    ",n-hungry()/2);
        }
        return 0;
    }
    


  • 相关阅读:
    Luogu P4002 [清华集训2017]生成树计数
    Luogu P3978 [TJOI2015]概率论
    Codechef JADUGAR2 Chef and Same Old Recurrence 2
    Codechef TREDEG Trees and Degrees
    一些有趣的数
    有向图上Euler回路计数
    P5105 不强制在线的动态快速排序
    二分图小结
    BZOJ2648: SJY摆棋子
    P3231 [HNOI2013]消毒
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6882218.html
Copyright © 2011-2022 走看看