zoukankan      html  css  js  c++  java
  • HDU 1068 Girls and Boys

    题目大意:

    有一些男女生之间的暧昧关系,求找到一组人数最多的,组中任何两人都没有暧昧关系的情况‘

    直接建图,求一个最大独立集

    二分图中最大独立集 = 总数 - 最大匹配数

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 using namespace std;
     5 const int N = 1005;
     6 int g[N][N] , cx[N] , cy[N] , visy[N] , n;
     7 
     8 int dfs(int u)
     9 {
    10     for(int i=0 ; i<n ; i++){
    11         if(g[u][i] && !visy[i]){
    12             visy[i] = 1;
    13             if(cy[i] == -1 || dfs(cy[i])){
    14                 cx[u] = i;
    15                 cy[i] = u;
    16                 return 1;
    17             }
    18         }
    19     }
    20     return 0;
    21 }
    22 
    23 int MaxMatch()
    24 {
    25     int ans = 0;
    26     memset(cx , -1 , sizeof(cx));
    27     memset(cy , -1 , sizeof(cy));
    28     for(int i=0 ; i<n ; i++){
    29         if(cx[i] == -1){
    30             memset(visy , 0 , sizeof(visy));
    31             ans += dfs(i);
    32         }
    33     }
    34     return ans;
    35 }
    36 
    37 int main()
    38 {
    39    // freopen("a.in" , "r" , stdin);
    40     while(scanf("%d" , &n) == 1)
    41     {
    42         int id , k , match;
    43         memset(g , 0 , sizeof(g));
    44         for(int i=0 ; i<n ; i++){
    45             scanf("%d: (%d)" , &id , &k);
    46             for(int j=0 ; j<k ; j++){
    47                 scanf("%d" , &match);
    48                 g[id][match] = 1;
    49             }
    50         }
    51         printf("%d
    " , n-MaxMatch()/2);//因为男女生重复匹配了,所以要除以2
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    安全扫描英汉对照意思
    文件包含漏洞
    文件上传漏洞
    XSS攻击
    常用命令
    适用于 Python 的 AWS 开发工具包 (Boto3)
    SQS 设置长轮询
    Amazon SNS 消息属性
    SQS Queues and SNS Notifications – Now Best Friends
    Policy Evaluation Logic 策略评估逻辑
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4228259.html
Copyright © 2011-2022 走看看