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

题目链接:

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

题目大意:

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

解题思路:

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

代码:

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define maxn 505
int map[maxn][maxn], used[maxn], girl[maxn], n, m;
//map储存匹配关系,used用来标记是否增广过,girl[i]表示girl[i]这个女生已经和i这个男生匹配
bool find (int x);
int main ()
{
int k;
while (scanf ("%d", &k), k)
{
scanf ("%d %d", &m, &n);
memset (map, , sizeof(map));
memset (girl, , sizeof(girl)); while (k --)
{
int u, v;
scanf ("%d %d", &u, &v);
map[u][v] = ;
} int sum = ;
for (int i=; i<=m; i++)
{//每个女生匹配,都需要清空标记增广数组
memset (used, , sizeof(used));
if (find (i))
sum ++;
}
printf ("%d\n", sum);
}
return ;
} bool find (int x)
{//dfs增广,寻找x的匹配
for (int i=; i<=n; i++)
{
if (!used[i] && map[x][i])
{//未被增广并且x与i可以匹配
used[i] = ;
if (!girl[i] || find(girl[i]))
{//i没有和任一个女生匹配或者发现增光路,则匹配成功
girl[i] = x;
return true;
}
}
}
return false;
}

hdu 2063 过山车 (最大匹配 匈牙利算法模板)的更多相关文章

  1. hdu 2063 过山车【匈牙利算法】(经典)

    <题目链接> RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partne ...

  2. HDU 2063.过山车-Hungary(匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. hdoj 2063 过山车【匈牙利算法+邻接矩阵or邻接表】

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  4. hdu 2063 过山车(匈牙利算法模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory ...

  5. hdu 2063 过山车 二分匹配(匈牙利算法)

    简单题hdu2063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Ot ...

  6. hdu 2063 过山车(模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Me ...

  7. HDU 2063 过山车 (最大匹配,匈牙利算法)

    题意:中文题目 思路:匈牙利算法解决二分图最大匹配问题. #include <bits/stdc++.h> using namespace std; ; int mapp[N][N]; / ...

  8. HDU 2063 过山车 (匈牙利算法)

    题目链接:HDU 2063 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩 ...

  9. [ACM] HDU 2063 过山车 (二分图,匈牙利算法)

    过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

随机推荐

  1. IOS开发 APP提交程序上传流程

    由于苹果的机制,在非越狱机器上安装应用必须通过官方的App Store,开发者开发好应用后上传App Store,也需要通过审核等环节.AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传A ...

  2. 怎样扩展EasyUI在页面中马上显示选中的本地图片

    在编写前台页面的时候,有时须要将选中的图片夹杂着其它信息一起上传到服务端,在选着本地图片的时候,为了获得更好的效果,须要将该图片显示在页面上. 最初思路有两个.详细例如以下: 1.获取选中文件的二进制 ...

  3. #define中的#和##作用

    #define语句中的#是把参数字符串化,##是连接两个参数成为一个整体. #define FACTORY_REF(name) { #name, Make##name } 中#name就是将传入的na ...

  4. HDU1306 String Matching 【暴力】

    String Matching Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. MySQL 当记录不存在时插入,当记录存在时更新

    第一种: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (client_id,client_name ...

  6. LruCache & DiskLruCache

    在用户界面(UI)加载一张图片时很简单,然而,如果你需要加载多张较大的图像,事情就会变得更加复杂,.在许多情况下(如与像的ListView GridView或ViewPager的组件),屏幕上的图片的 ...

  7. BZOJ 3550 ONTAK2010 Vacation 单纯形

    题目大意:给定一个长度为3n的区间.要求选一些数,且随意一段长度为n的区间内最多选k个数.求选择数的和的最大值 单纯形直接搞 注意一个数仅仅能被选一次 因此要加上xi<=1这个约束条件 不明确3 ...

  8. [办公应用]从美国带回来的兄弟牌brother打印机如何处理

    周末帮朋友去调一台国外带回来的brother一体机,型号MFC-J630W.这是她单位老板从国外带回来的,说是便宜:不过她说只有英文说明书,她不太会操作.我想这还不容易么,就满口答应下来了.我先到br ...

  9. C项目实践--贪吃蛇(2)

    12.按键处理 函数名称:key_down 函数功能:按键处理函数,主要包括:1.刚开始或结束时的按键处理,游戏开始时,按任意键进入游戏,游戏运行过程中按回车键是游戏的暂停或开始的切换键:2.游戏运行 ...

  10. Page 实例的生命周期

    注册页面 · 小程序 https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html