题目:

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

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

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

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

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

输入格式

第一行包含三个整数 n1n1、 n2n2 和 mm。

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

输出格式

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

数据范围

1≤n1,n2≤500
1≤u≤n1,
1≤v≤n2
1≤m≤10^5

输入样例:

2 2 4
1 1
1 2
2 1
2 2

输出样例:

2

代码:

n1, n2, m = map(int, input().split())
idx = 0
e, ne, h = [0]*(2*m+1), [0]*(2*m+1), [-1]*(n1+1)match = [0]*(n2+1)def add(a, b):global idxe[idx], ne[idx], h[a] = b, h[a], idxidx += 1def find(x):i = h[x]while i != -1:j = e[i]if not st[j]:st[j] = Trueif match[j] == 0 or find(match[j]):match[j] = xreturn Truei = ne[i]return Falsefor _ in range(m):a, b = map(int, input().split())add(a, b)res = 0
for i in range(1, n1+1):st = [False]*(n2+1)if find(i): res += 1
print(res)

算法题 匈牙利算法 求二分图最大匹配(Python)相关推荐

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

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

  2. edmonds算法matlab,匈牙利算法的matlab实现

    匈牙利算法 算法简介 算法原理 算法实现(附代码) 测试 算法简介 下面摘用百度百科中的解释. 匈牙利算法(Hungarian method)是由匈牙利数学家Edmonds于1965年提出,因而得名. ...

  3. 趣写算法之匈牙利算法

    [书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程] 匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思 ...

  4. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题

    题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...

  5. HDU - 2389 Rain on your Parade(Hopcroft-Krap算法求二分图最大匹配)

    题目链接:点击查看 题目大意:给出n个人和m个雨伞,t分钟后就要下雨了,现在给出每个人的坐标和速度,以及雨伞所在的坐标,每个雨伞只能容纳一个人,题目问最多有多少个人能不被淋到 题目分析:二分图最大匹配 ...

  6. 【网络流24题】解题报告:A、飞行员配对方案问题(最大流求二分图最大匹配)

    A.飞行员配对方案问题 (二分图最大匹配)(最大流)[提高+/省选- ] 题目链接 [问题分析] 二分图最大匹配问题. [建模方法] 在二分图的基础上增加源S和汇T. 1.S向X集合中每个顶点连一条容 ...

  7. Java构造字符串算法题_LeetCode算法题-Repeated Substring Pattern(Java实现)

    这是悦乐书的第236次更新,第249篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第103题(顺位题号是459).给定非空字符串检查是否可以通过获取它的子字符串并将子字符 ...

  8. LeetCode算法题2:求字符串b在字符串a中的起始下标

    文章目录 前言 一.题目描述 二.思路 1.朴素匹配 1.1Java直接实现 2.kmp模式匹配 总结 前言 本系列文章为leetCode刷题笔记,仅供参考. 一.题目描述 若字符串 a 包含字符串 ...

  9. python比赛积分类算法题_Python算法题(一)——青蛙跳台阶

    题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: ...

最新文章

  1. 查看MS SQL Server数据库每个表占用的空间大小
  2. MySQL8索引篇:性能提升了100%!!
  3. 【例3.5】位数问题
  4. k8s StatefulSet
  5. SpringMVC介绍之Validation
  6. iOS15字符串格式化缺0补0的写法
  7. Hibernate基本概念 (4)
  8. 如何循环遍历document.querySelectorAll()方法返回的结果
  9. Python 生成requirement 使用requirements.txt
  10. large_margin
  11. GCD三部曲之一---辗转相除法
  12. webConfig详细跳转配置.[转]
  13. 2018-12-13丛晓强作业
  14. 简单的使用git克隆上传创建下载删除
  15. 详解BI系统中的任务调度
  16. 认知盈余时代-知乎如何运营
  17. roc_curve()的用法及用途
  18. Openbravo安装与部署
  19. 论文笔记|Unsupervised Keyphrase Extraction by Jointly Modeling Local and Global Context
  20. System.Net.WebException: 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.Authe

热门文章

  1. python颜色识别_颜色检测python
  2. centeros 链接mysql_centeros 配置 mysql 支持远程访问
  3. vscode调试python变量窗口空白_vscode窗口崩溃解决(vscode终端一片空白)
  4. Avril Lavigne
  5. jquery实现事件代理
  6. 学编程太枯燥太难怎么办?
  7. 利用c语言写一段可调亮度的LED灯程序
  8. UI设计交互逻辑和常用工具
  9. Javascript如何获取选中项的文本值TEXT不是VALUE
  10. 用爱心传承爱心 用善心铸就明天