就是说是怎么才能让尽可能多的人找到对象法((
给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 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≤1e5
输入样例:
2 2 4
1 1
1 2
2 1
2 2
输出样例:
2

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 510, M = 100010;
int n1, n2, m;
int h[N], e[M], ne[M], idx;
int match[N];//存储当前匹配的对象
bool st[N];void add(int a, int b) {e[idx] = b;ne[idx] = h[a];h[a] = idx++;
}bool find(int x) {for (int i = h[x]; i != -1; i = ne[i]) {int j = e[i];if (!st[j]) {st[j] = true;if (match[j] == 0 || find(match[j])) {match[j] = x;//如果没有对象或者成功换一个对象return true;}}}return false;
}
int main() {memset(h, -1, sizeof h);cin >> n1 >> n2 >> m;while (m--) {int a, b;cin >> a >> b;add(a, b);}int res = 0;for (int i = 1; i <= n1; i++) {memset(st, false, sizeof st);//把每个右边匹配对象重置 //因为对上一个点不匹配的点不一定对下一个点不匹配//就是有喜欢的对象就先表个白 成不成find说了算if (find(i))res++;}cout << res;return 0;
}

AcWing861 二分图的最大匹配 匈牙利算法相关推荐

  1. 二分图的最大匹配—匈牙利算法

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

  2. 二分图的最大匹配 匈牙利算法

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

  3. 二分图最大匹配 - 匈牙利算法

    问题描述: X集合(编号1~m),Y集合(编号m+1~n).n,m<100. 给出若干组合(x, y)(相当于映射x->y),问最都能同时有几个组合(分配). 分析: 题目可能简化描述得不 ...

  4. 二分图最大匹配—匈牙利算法

    二分图:又叫二部图,图G中顶点集V可以分成互不相交的子集(X,Y),并且图中的每一条边所关联的点分别属于两个不同的顶点集,则图G叫二分图.(不含奇环) 二分图的匹配:给定一个二分图G的子图M,M的边集 ...

  5. 二分图最大匹配-匈牙利算法

    今天介绍 匈牙利算法 : 匈牙利算法,是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,由匈牙利数学家Edmonds于1965年提出,因而得名. 先介绍一下 ...

  6. 二分图的匹配——匈牙利算法

    什么是匹配 匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点. 最大匹配:一个图所有匹配中,所含匹配边数最多的匹配,称为这个图的最大匹配. 二分图的匹配:给定一个二分图G,在G ...

  7. 数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配

    数据结构与算法学习笔记15:最大流问题 / 二分图 / 有权无权二分图的匹配 / 匈牙利算法 / 银行家算法 / 稳定婚配 引入小题:最短路径 最大流问题(maximum flow problem) ...

  8. HDU 2063 过山车 (二分图匹配之匈牙利算法)

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

  9. 二分图最大匹配——匈牙利算法

    二分图最大匹配 (一).二分图的介绍 1.定义 2.充要条件 (二).二分图的匹配 1.二分图的最大匹配 2.增广路径 3.匈牙利算法 (1).复杂度 (2).算法思路 (3).代码实现 (一).二分 ...

最新文章

  1. 检查Android应用程序是否在后台运行
  2. 【网络安全】Agent内存马的自动分析与查杀
  3. java 连接redis 以及基本操作
  4. Android 系统(175)---Android硬件加速原理与实现简介
  5. 马斯克称面临巨大通胀压力 暗示特斯拉可能涨价
  6. BZOJ1051|HAOI2006受欢迎的牛|强连通分量
  7. 走进龙芯3A3000(一)安装Loongnix
  8. Java SE基础知识点总结(四)
  9. 无法直接复制文件到ubuntu虚拟机解决
  10. oracle公司的crm系统,原创-CRM客户关系管理系统设计-jsp+oracle
  11. 北漂IT男返乡2年的三线楼市观察(宜昌夷陵篇)-原创
  12. win8计算机显示在桌面快捷方式,win10、win8.1系统桌面快捷方式图标显示异常怎么办-系统操作与应用 -亦是美网络...
  13. 怀孕计算机在线,【孕期天数计算器在线计算_孕期天数计算器在线计算专题】- 天鹅到家...
  14. 计算机硬件的组装硬盘,组装电脑如何选择硬盘?DIY装机四种电脑硬盘搭配方案提供参考...
  15. Python学习笔记 day9 堡垒机前戏之paramiko模块
  16. 嵌入式行业是个坑吗?
  17. MAFIA 算法解析
  18. 真心话大冒险经典问题
  19. QSL语句大全(3)
  20. Mac登录不上自己的QQ账号,别人的账号却是可以正常登录--解决方法

热门文章

  1. 在vim中的查找字符
  2. 创业者如何利用裂变工具实现流量裂变增长
  3. 华尔街见闻Istio生产实践
  4. 全面保护网速 瑞星路由安全卫士让你向弹窗卡顿说不!
  5. 魔改《自动化学报》Latex模板
  6. 【android】音乐播放器之数据存储总结
  7. 软件实施工程师应该掌握哪些技能
  8. 腾讯技术直播预告|不要怂,一起上!关于******,我们有话要说
  9. 【产品经理】B端产品规划和Roadmap怎么做?
  10. thinkpad T430 :Intel 7系主板在XP下装AHCI驱动的方法