zoukankan      html  css  js  c++  java
  • hdu1068 Girls and Boys 二分匹配

    题目链接:

    二分匹配的应用

    求最大独立集

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

    本体中由于男孩和女孩的学号是不分开的,所以匹配数应是求得的匹配数/2

    代码:  

     1 #include<iostream>
     2 #include<cstdlib>
     3 #include<cstring>
     4 #include<cstdio>
     5 using namespace std;
     6 #define maxn  500
     7 int g[maxn][maxn];
     8 int vis_x[maxn];
     9 int vis_y[maxn];
    10 int cx[maxn];
    11 int cy[maxn];
    12 int n;
    13 int ans;
    14 int path(int u)
    15 {
    16 
    17   vis_x[u]=1;
    18   for(int v=0;v<n;v++)
    19   {
    20      if(vis_y[v]==0 && g[u][v]!=0)
    21      {
    22         vis_y[v]=1;
    23 
    24         if(cy[v]==-1 || path(cy[v]))
    25         {
    26             cx[u]=v;
    27             cy[v]=u;
    28             return 1;
    29         }
    30      }
    31   }
    32   return 0;
    33 }
    34 void MaxMatch()
    35 {
    36    memset(cx,-1,sizeof(cx));
    37    memset(cy,-1,sizeof(cy));
    38 
    39    for(int i=0;i<n;i++)
    40    {
    41       if(cx[i]==-1)
    42       {
    43          
    44         memset(vis_x,0,sizeof(vis_x));
    45         memset(vis_y,0,sizeof(vis_y));
    46         ans+=path(i);
    47       }
    48    }
    49 }
    50 int main()
    51 {
    52    while(scanf("%d",&n)!=EOF)
    53    {
    54        int id;
    55        int num;
    56        char c;
    57        ans=0;
    58        memset(g,0,sizeof(g));
    59       for(int i=0;i<n;i++)
    60       {
    61        scanf("%d: (%d)", &id,&num);
    62         for(int j=0;j<num;j++)
    63          {
    64              int b;
    65              scanf("%d",&b);
    66              g[id][b]=1;
    67          }
    68       }
    69          MaxMatch();
    70          cout<<n-ans/2<<endl;
    71 
    72       
    73    }
    74    return 0;
    75 }
  • 相关阅读:
    webpack常见问题 收藏
    ES6 模块
    ES6 Class 类
    ES6 迭代器
    ES6 函数
    ES6 数组
    ES6 对象
    记一次pda(安卓)环境配置流程
    类型转换
    DOM事件
  • 原文地址:https://www.cnblogs.com/xiaozhuyang/p/hdu1068.html
Copyright © 2011-2022 走看看