zoukankan      html  css  js  c++  java
  • HDU1068 Girls and Boys

      本题求最大独立集,那么用公式:

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

      对于这道题来说,发现给出的数据构造出的是一个无向图,那么直接匈牙利计算会重复,得出的是2倍的最大匹配。 所以最后结果得出的最大匹配值要除以2.

    View Code
     1 #include <iostream>
     2 #include <string.h>
     3 #include <stdio.h>
     4 using namespace std;
     5 
     6 const int M = 500 + 2;
     7 bool g[M][M], vis[M];
     8 int  link[M], m, n, k;
     9 
    10 bool find(int i)
    11 {
    12     for(int j = 0;j < n; j++)
    13     {
    14         if(g[i][j] && !vis[j])
    15         {
    16             vis[j] = true;
    17             if(link[j] == -1 || find(link[j]))
    18             {
    19                 link[j] = i;
    20                 return true;
    21             }
    22         }
    23     }
    24     return false;
    25 }
    26 
    27 int main()
    28 {
    29     int i, j, res;
    30     while(scanf("%d", &n) == 1)
    31     {
    32         memset(g, false, sizeof(g));
    33         memset(link, -1, sizeof(link));
    34         for(int p= 0; p < n; p ++)
    35         {
    36             scanf("%d: (%d) ", &j, &m);
    37             for(i = 0; i < m; i ++)
    38             {
    39                 scanf("%d", &k);
    40                 g[j][k] = true;
    41             }
    42         }
    43         for(res=0, i = 0; i < n; i++)
    44         {
    45             memset(vis,0,sizeof vis);
    46             if(find(i))
    47                 res++;
    48         }
    49         printf("%d\n", n - res/2);
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    ActiveMQ (一) 简介
    MSMQ .NET下的应用
    MSMQ
    RabbitMq C# .net 教程
    Rabbit MQ
    Dynamics 365—脚本
    DNS服务器地址汇总
    特殊字符 编码
    4s前置摄像头调用
    登陆前后导航栏处理 2015-12-12
  • 原文地址:https://www.cnblogs.com/huangfeihome/p/2862083.html
Copyright © 2011-2022 走看看