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

    Girls and Boys

    思路:二分图中,最大独立集 = 顶点数 - 最小点覆盖(最大匹配),这里没有说明明确的二分图,所以匹配出的是二倍的最大匹配(男配女,女配男)。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstdio>
     4 #include <vector>
     5 
     6 using namespace std;
     7 
     8 const int N = 510;
     9 int pre[N];
    10 vector<int > E[N];
    11 bool vis[N];
    12 int n;
    13 
    14 bool find(int u){
    15 
    16     for(int i = 0; i < (int)E[u].size(); ++i){
    17         int v = E[u][i];
    18         if(vis[v]) continue;
    19         vis[v] = 1;
    20         if(!pre[v] || find(pre[v])){  
    21             pre[v] = u;
    22             return true;
    23         }
    24     }
    25     return false;
    26 }
    27 
    28 void init(){
    29     for(int i = 0; i < n; ++i){
    30         pre[i] = 0;
    31         E[i].clear();
    32     }
    33 }
    34 
    35 void solve(){
    36 
    37     while(~scanf("%d", &n)){
    38         
    39         init();
    40 
    41         int u, x, v;
    42         for(int i = 0; i < n; ++i){
    43             scanf("%d: (%d)", &u, &x);
    44             for(int j = 0; j < x; ++j){
    45                 scanf("%d", &v);
    46                 E[u].push_back(v);
    47             }
    48         }
    49 
    50         int match = 0;
    51         for(int i = 0; i < n; ++i){
    52             for(int o = 0; o < n; ++o) vis[o] = 0;
    53             if(find(i)) match++;
    54         }
    55 
    56         printf("%d
    ", n - match / 2);
    57         //printf("ans = %d
    ", n - match / 2);
    58     }
    59 }
    60 
    61 
    62 int main(){
    63 
    64     solve();
    65 
    66     return 0;
    67 }
  • 相关阅读:
    JVM系列三:JVM参数设置、分析
    JVM系列二:GC策略&内存申请、对象衰老
    HotSpot VM GC 的种类
    2.静态库和动态库
    1.GCC编译过程
    6.树
    5.队列
    4.栈
    3.线性表
    2.算法
  • 原文地址:https://www.cnblogs.com/SSummerZzz/p/13203585.html
Copyright © 2011-2022 走看看