zoukankan      html  css  js  c++  java
  • hdu 2063 过山车 (最大匹配 匈牙利算法模板)

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。

    题目链接:

      http://acm.hdu.edu.cn/showproblem.php?pid=2063

    题目大意:

      中文题目,点进去马上知道。

    解题思路:

      这道题目就是求最大匹配数目,直接套用匈牙利算法模板,这个算法大概原则就是:有机会上,没有机会创造机会也要上。

    代码:

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 #include <algorithm>
     5 using namespace std;
     6 
     7 #define maxn 505
     8 int map[maxn][maxn], used[maxn], girl[maxn], n, m;
     9 //map储存匹配关系,used用来标记是否增广过,girl[i]表示girl[i]这个女生已经和i这个男生匹配
    10 bool find (int x);
    11 int main ()
    12 {
    13     int k;
    14     while (scanf ("%d", &k), k)
    15     {
    16         scanf ("%d %d", &m, &n);
    17         memset (map, 0, sizeof(map));
    18         memset (girl, 0, sizeof(girl));
    19 
    20         while (k --)
    21         {
    22             int u, v;
    23             scanf ("%d %d", &u, &v);
    24             map[u][v] = 1;
    25         }
    26 
    27         int sum = 0;
    28         for (int i=1; i<=m; i++)
    29         {//每个女生匹配,都需要清空标记增广数组
    30             memset (used, 0, sizeof(used));
    31             if (find (i))
    32                 sum ++;
    33         }
    34         printf ("%d
    ", sum);
    35     }
    36     return 0;
    37 }
    38 
    39 bool find (int x)
    40 {//dfs增广,寻找x的匹配
    41     for (int i=1; i<=n; i++)
    42     {
    43         if (!used[i] && map[x][i])
    44         {//未被增广并且x与i可以匹配
    45             used[i] = 1;
    46             if (!girl[i] || find(girl[i]))
    47             {//i没有和任一个女生匹配或者发现增光路,则匹配成功
    48                 girl[i] = x;
    49                 return true;
    50             }
    51         }
    52     }
    53     return false;
    54 }
    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    1001 字符串“水”题(二进制,map,哈希)
    hzau 1210 Happiness
    hzau 1209 Deadline(贪心)
    hzau 1208 Color Circle(dfs)
    hzau 1207 Candies
    hzau 1206 MathematicalGame
    hzau 1205 Sequence Number(二分)
    hzau 1204 Escape from the Darkness
    Calculator 2
    Calculator
  • 原文地址:https://www.cnblogs.com/alihenaixiao/p/4475578.html
Copyright © 2011-2022 走看看