利用链式前向星存边,

match[j]:j点匹配的点

package Test;//二分图最大匹配import java.util.*;public class 匈牙利算法 {static int n, m, k, cnt = 0;static int[] head = new int[505], e = new int[50005], next = new int[50005];static boolean[] vis = new boolean[505];static int[] match = new int[505];public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();k = sc.nextInt();for (int i = 0; i < k; i++) {int u = sc.nextInt();int v = sc.nextInt();add(u,v); //有向图}int res = 0;for (int i = 1; i <= n; i++) {Arrays.fill(vis,false);if (find(i)) res++;}System.out.println(res);}private static boolean find(int x) {for (int i = head[x]; i > 0; i = next[i]) {     //遍历边int j = e[i];if (vis[j] == false) { //未访问过vis[j] = true;     //记录状态为访问过if (match[j] == 0 || find(match[j])) { //如果暂未匹配,或者原来匹配的左侧元素可以找到新的匹配match[j] = x;   //当前左侧元素成为当前右侧元素的新匹配return true;}}}return false;}private static void add(int u, int v) {e[++cnt] = v;next[cnt] = head[u];head[u] = cnt;}}

ji!

匈牙利算法(处理二分图最大匹配问题)相关推荐

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

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

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

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

  3. 【7.17总结】 匈牙利算法(二分图最大匹配)

    二分图就是把图的点集分成X和Y两个集合且连接每条边的两个顶点分别在两个集合. 匹配是指图的边集的一个子集,其中任意两条边没有相同的顶点. 最大匹配就是找到一个匹配使得匹配里面的边数最多. 增广路径就是 ...

  4. 匈牙利算法求解二分图最大匹配问题

    这是一个非常简单的问题,描述如下,给你两部分的点,问你最大匹配数是多少. 简单描述一下算法流程,首先我们先匹配左边,蓝1先匹配红2:接下来到蓝2,只能匹配红2,但是这这时候发现红2已经有主了,根据匈牙 ...

  5. Hungary(匈牙利算法)——二分图最大匹配

    在复习匈牙利算法的时候,发现这么一篇介绍匈牙利算法的文章,非常通俗易懂,所以就借鉴过来了. 复杂度:邻接矩阵:O(v^3)邻接表:O(V*E) 附上链接:趣写算法系列之--匈牙利算法 下面就附上代码吧 ...

  6. 算法题 匈牙利算法 求二分图最大匹配(Python)

    题目: 给定一个二分图,其中左半部包含n1n1个点(编号1~n1n1),右半部包含n2n2个点(编号1~n2n2),二分图共包含m条边. 数据保证任意一条边的两个端点都不可能在同一部分中. 请你求出二 ...

  7. 匈牙利算法解决二分图匹配问题

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

  8. 算法简介:二分图最大匹配

    算法简介 算法简介 二分图最大匹配 相关概念 二分图:如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于集合X,另一个属于集合Y,即每个集合内的顶点没有边相连,那么此图就是 ...

  9. 用匈牙利算法求二分图的最大匹配

    转载大神的!! 什么是二分图,什么是二分图的最大匹配,这些定义我就不讲了,网上随便都找得到.二分图的最大匹配有两种求法,第一种是最大流(我在此假设读者已有网络流的知识):第二种就是我现在要讲的匈牙利算 ...

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

    传送门 题意:给定一个二分图,其中左半部包含n1个点(编号1 ~ n1),右半部包含n2个点(编号1~n2),二分图共包含m条边. 数据保证任意一条边的两个端点都不可能在同一部分中. 请你求出二分图的 ...

最新文章

  1. 清华医工结合项目及三创项目与天津市27家重点医院对接
  2. eureka心跳_Eureka工作原理及心跳机制
  3. 序列两两比对算法_【陪你学生信】八、序列两两比对
  4. python怎么读取文件-Python中怎么读写文件
  5. 步进电机的单双极驱动
  6. 百度地图 IOS版开发经验分享
  7. JVM——虚拟机的简介【摘录】
  8. 今晚直播 | 强化学习在比赛和自动机器学习中的应用简析
  9. NIPS 2017 | 线上分享第一期:似自然梯度的优化算法KFAC与强化学习算法ACKTR
  10. vue-cli3.0修改浏览器中的小图标
  11. ssd内部是多个flash一起操作_广告设计中Flash图形动画的应用
  12. 信安教程第二版-第15章网络安全主动防御技术与应用
  13. 从veth看虚拟网络设备的qdisc
  14. LeetCode:Anagrams
  15. 北风网Winform实战开发上海某房产中介管理系统视频教程
  16. 离散数学第六版第er章偶数题答案_离散数学答案第二章习题解答
  17. emmagee的基本使用
  18. Python处理Excel数据分组
  19. JMeter(三):后置处理器[Regular Expression Extractor]
  20. 通过X11转发在服务器上用IGV

热门文章

  1. 为什么需要webpack?
  2. [Android] 仿小米空气净化器首页旋转UI
  3. html 下拉列表 select
  4. linux完全备份 增量备份,完全备份、增量备份与差异备份
  5. 题目 1084: 用筛法求之N内的素数
  6. springboot log4j2.xml读取application.yml中的属性值
  7. 视图操作 第3关:在视图中插入、修改、删除数据
  8. 人工智能深度学习笔记
  9. 深度学习知识图谱笔记
  10. (读研体会)如何选题