给定一个二分图,其中左半部包含n1个点(编号1n1),右半部包含n2个点(编号1n2),二分图共包含m条边。

数据保证任意一条边的两个端点都不可能在同一部分中。

请你求出二分图的最大匹配数。

二分图的匹配:给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。

二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。

输入格式
第一行包含三个整数 n1、 n2 和 m。

接下来m行,每行包含两个整数u和v,表示左半部点集中的点u和右半部点集中的点v之间存在一条边。

输出格式
输出一个整数,表示二分图的最大匹配数。

数据范围
1≤n1,n2≤500,
1≤u≤n1,
1≤v≤n2,
1≤m≤105
输入样例:
2 2 4
1 1
1 2
2 1
2 2
输出样例:
2

#include<bits/stdc++.h>
using namespace std;int n1,n2,m;
const int N=1e5+50;
int h[N],ne[N],e[N],idx;
int match[N];
bool jud[N];
void add(int a,int b){e[++idx]=b;ne[idx]=h[a];h[a]=idx;
}
int cnt;
int u,v;
bool find(int u){for(int i=h[u];i;i=ne[i]){int j=e[i];if(!jud[j]){//标记一下jud[j]=1;if(!match[j]||find(match[j])){match[j]=u;//别忘了更新自己return 1;}}}return 0;
}
int main(){cin>>n1>>n2>>m;for(int i=0;i<m;i++){cin>>u>>v;add(u,v);}for(int i=1;i<=n1;i++){memset(jud,0,sizeof jud);if(find(i)){cnt++;//要在这里更新cnt}}cout<<cnt;return 0;
}

匈牙利算法(渣男算法相关推荐

  1. 匈牙利算法——海王们的渣男渣女行为

    二分图定义 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不 ...

  2. Kiner算法刷题记(十四):数据结构中的“渣男”——单调栈(数据结构基础篇)

    系列文章导引 系列文章导引 开源项目 本系列所有文章都将会收录到GitHub中统一收藏与管理,欢迎ISSUE和Star. GitHub传送门:Kiner算法算题记 知识回顾 我们之前讨论过单调队列,知 ...

  3. 【干货+福利】情侣、基友、渣男和狗-基于SynchroTrap+LPA算法的团伙账户挖掘

    本文目的:把经常一起行动的人找出来,并划分成一个Group,仅利用时间关系,无需其他介质 上一期的文章,没有解决相隔时间近但是不在同一个5min切片内的的问题,为了解决这个问题,我研究了一些关于时序的 ...

  4. 跌落神坛的算法,从此做个互联网渣男

    程序员吴师兄 读完需要 2 分钟 速读仅需 1 分钟 996 下班之后打算吃个夜宵,打开某团发现又涨价,虽然不甘心但还是不情愿的下单了,第二天和同事吐槽时发现就我的涨价,一对比原来我是高贵的会员,高贵 ...

  5. KM算法——一场渣男和渣女的盛宴

    KM算法是一种用贪心算法的方式解决无向有权二分图完备分解的方法.网上有很多博客讨论,但是写的都太过复杂,不是很容易懂.笔者现在想以最简单的方式加以诠释. 假设有一堆渣男和一堆渣女,他们之间互相有好感值 ...

  6. 常用代码模板3——搜索与图论(Bellman-Ford算法 、spfa 算法、floyd算法、Kruskal算法、染色法、匈牙利算法 )

    目录 一.树与图的存储 二.树与图的遍历 (1) 深度优先遍历 -- 模板题 AcWing 846. 树的重心 (2) 宽度优先遍历 -- 模板题 AcWing 847. 图中点的层次 拓扑排序 -- ...

  7. 基于SVM算法的男女生分类器

    基于SVM算法的男女生分类器 题目:采用SVM设计男女生分类器.采用的特征包含身高.体重.鞋码.50m成绩.肺活量.是否喜欢运动共六个特征.要求:采用平台提供的软件包进行分类器的设计以及测试,尝试不同 ...

  8. 多目标跟踪算法中之图匹配——匈牙利算法和KM算法详解

    目录 一.匈牙利算法 1.算法背景及思想 2.最大匹配 3.最优匹配/完美匹配 4.增广路径 5.代码实现 6.匈牙利算法总结 6.1.深度优先 6.2. 广度优先 二.KM算法思想及局限性 代码示例 ...

  9. java 鸡尾酒排序_算法渣-排序-冒泡

    没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺:跟着算法渣一起从零学算法 定义 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 这个算法的名字由来 ...

最新文章

  1. 【unity3d study ---- 麦子学院】---------- unity3d常用组件及分析 ---------- 组件的使用...
  2. .Net定时弹出窗口(c#)
  3. Hydra 8.4/8.5新增功能
  4. IntelliJ IDEA快捷键学习
  5. 【C++】 C++标准模板库(十二) 迭代器和STL
  6. Android 不显示标题栏和全屏的设置方法
  7. linux 生成hash值命令,linux-从给定哈希计算base64编码哈希?
  8. python request和urllib_requests和urllib.request的区别是什么?
  9. UI设计素材|app表单模板,临摹学习,有效提高设计水平!
  10. POJ3752 字母旋转游戏【水题】
  11. wgan 不理解 损失函数_[图像盲去噪与GAN]GCBD翻译理解
  12. 如何才能精通C++?原来这点才最重要!
  13. [WCF权限控制]WCF的三种授权模式
  14. 你能卖什么,决定了你的收入落在什么档次
  15. (附源码)ssm基于JSP的养老院信息管理系统的设计与实现 毕业设计 211141
  16. mysql pxc 使用_MySQL PXC集群安装配置
  17. minHJ函数matlab黄金分割法,黄金分割法求极小值
  18. 如何免费设置QQ空间背景音乐
  19. Python3.9.10标准库与语言参考等文档下载
  20. c# 无法加载DLL“SQLite.Interop.dll”,: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

热门文章

  1. 华为畅享20e高配版参数
  2. 如何在 Excel 中快速将多列数据合并到一列?(不同方法实现)前提不覆盖
  3. 物联网网关程序设计-3
  4. 【thinkphp5操作redis系列教程】哈希类型之hIncrBy,hIncrByFloat
  5. java-net-php-python-55jspm启航游泳馆会员管理系统计算机毕业设计程序
  6. 浪擎科技D系实时备份系统技术白皮书
  7. GROUP BY 分组后显示组内所有数据
  8. 计算机二级Python 操作题知识点及例题总结
  9. Spark基础学习笔记(1)
  10. Java web 跨域cookie设置