zoukankan      html  css  js  c++  java
  • HDU 1068 Girls and Boys(最大独立集合 = 顶点数

    HDU 1068 :题目链接

    题意:一些男孩和女孩,给出一些人物关系,然后问能找到最多有多少个人都互不认识。

    转换一下:就是大家都不认识的人,即最大独立集合


    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <math.h>
    #define init(a) memset(a,0,sizeof(a))
    #define PI acos(-1,0)
    using namespace std;
    const int maxn = 510;
    const int maxm = 100001;
    #define lson left, m, id<<1
    #define rson m+1, right, id<<1|1
    #define min(a,b) (a>b)?b:a
    #define max(a,b) (a>b)?a:b
    const int N = 50010;
    int ma[maxn][maxn];
    int line[maxn];
    bool vis[maxn];
    int k,n,m;
    
    int DFS(int u)
    {
       // printf("u = %d
    ",u);
        for(int v = 0;v<k;v++)
        {
            if(ma[u][v]== 1 && vis[v]==0)
            {
                vis[v] = 1;
                if(line[v]== -1 || DFS(line[v]))
                {
                    line[v] = u;
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int K_M()
    {
        int ans = 0;
        memset(line,-1,sizeof(line));
        for(int i = 0;i<k;i++)
        {
            init(vis);
           ans += DFS(i);
        }
        return ans;
    }
    int main()
    {
        int x,y;
        while(~scanf("%d",&k))
        {
            init(ma);
            for(int j = 1;j<=k;j++)
            {
            scanf("%d: (%d)",&m,&n);
            for(int i = 1;i<=n;i++)
            {
                scanf("%d",&x);
                ma[m][x] = 1;
            }
            }
    //最大独立集合 = 顶点数 - 最大匹配数
            int ans = K_M();
            ans /= 2;
            printf("%d
    ",k-ans);
        }
        return 0;
    }


  • 相关阅读:
    vim 编辑器
    用得到到的超方便软件
    关于 lua table表
    python 写入文件形式
    ifconfig中lo、eth0、br0、wlan0接口
    CPU:chip、core 和 processor 的关系
    lua 匹配空白符
    排序,查找(借鉴某大神的想法)
    sublime 快捷键
    获取进程的名称
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5253082.html
Copyright © 2011-2022 走看看