二分图:又称二部图,如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于一个集合X,另一个属于集合Y,即每个集合内的顶点没有边相连,那么这个图就是二分图。
二分图的最大分配问题就是,在所有的分配中,可以输出分配数最多的,但是这样的求解方式效率很低。下面我们引入“增广路”的概念
增广路的本质就是一条路径的起点和终点都是未被配对的点,增加一条增广路就是增加一条配对路线。而当图中已经找不到增广路的时候,就是当前匹配达到了最大匹配。
Input;
6 5
1 4
1 5
2 5
2 6
3 4
Output:
3

import java.util.Scanner;
public class two3 {static int[][] e = new int[101][101];static int[] match = new int[101];static int[] book = new int[101];static int n, m;static int sum = 0;static Scanner input = new Scanner(System.in);public static void main(String[] args) {n = input.nextInt();m = input.nextInt();for (int i = 1; i <= m; i++) {int x = input.nextInt();int y = input.nextInt();e[x][y] = 1;e[y][x] = 1;}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {book[j] = 0;}if (dfs(i)) {sum++;}}System.out.print(sum);}private static boolean dfs(int u) {for (int i = 1; i <= n; i++) {if (book[i] == 0 && e[u][i] == 1) {book[i] = 1;if (match[i] == 0 || dfs(match[i])) {match[i] = u;match[u] = i;return true;}}}return false;}
}

图论算法(六)-- 二分图的最大分配问题(JAVA)相关推荐

  1. KM算法解决二分图最大权分配问题

    匈牙利算法和KM算法都可用来解决任务分配问题(亦称指派问题):假设有n名员工以及n份工作,一个人只能完成一项任务且能完成的任务各不相同.问如何安排员工才能使效率达到最大. 用大白话来描述二分图:二分图 ...

  2. 图论算法(二)-最短路径的Dijkstra [ 单源 ] 和Floyd[ 多源 ] 解法(JAVA )

    一.Dijkstra算法 问题描述:求一个点到任意个点的距离 思路:单源最短路径问题,使用Dijkstra算法 Input: 6 9 1 2 1 1 3 12 2 3 9 2 4 3 3 5 5 4 ...

  3. 图论算法(5):图的广度优先遍历 BFS

    本章节内容使用 java 实现,Github 代码仓:https://github.com/ZhekaiLi/Code/tree/main/Graph/src 查看文章内的图片可能需要科学上网! 因为 ...

  4. 图论 | 无向图 —— 二部图/二分图

    目录 1.二部图概述 1.1.二部图概念 1.2.二部图定理 2.匹配问题 2.1.匈牙利算法 2.1.1.匈牙利树 2.1.2.匈牙利算法 2.1.2.匈牙利算法代码 2.2.KM算法 2.2.1. ...

  5. c语言最小费用流_策略算法工程师之路-图优化算法(一)(二分图amp;最小费用最大流)...

    目录 1.图的基本定义 2.双边匹配问题 2.1 二分图基本概念 2.2 二分图最大匹配求解 2.3 二分图最优匹配求解 2.4 二分图最优匹配建模实例 2.4.1 二分图最优匹配在师生匹配中的应用 ...

  6. warshall算法求传递闭包c++_【建模小课堂】图论算法

    图论算法 图论算法在计算机科学中扮演着很重要的角色,它提供了对很多问题都有效的一种简单而系统的建模方式.很多问题都可以转化为图论问题,然后用图论的基本算法加以解决.这类问题算法主要包括Dijkstra ...

  7. 图论入门六:哥尼斯堡七桥问题

    转载自https://blog.csdn.net/saltriver/article/details/54585595 哥尼斯堡七桥问题: 1736年,年仅29岁的数学家欧拉来到普鲁士的古城哥尼斯堡( ...

  8. 数学建模图论算法学习总结

    数学建模图论算法学习总结 图论基本知识 B站视频: https://www.bilibili.com/video/av18374161/?p=35 https://www.bilibili.com/v ...

  9. 补学图论算法:算法竞赛入门经典(第二版)第十一章:

    补学图论算法:算法竞赛入门经典(第二版)第十一章: 倒排索引还没有实现! 下面是左神的图论算法,并查集笔记.和一个美团题目. ''' https://www.nowcoder.com/live/11? ...

最新文章

  1. Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...
  2. [uEnv.txt]在uEnv.txt文件中使用if语句实现Image/dtb文件切换
  3. python挖长尾词 源码,如何用代码挖局长尾关键词
  4. 03-requests模块携带UA请求头,携带参数,携带cookie,持久化存储
  5. kuayu react_React+Spring实现跨域问题的完美解决方法
  6. 使用Log4jdbc记录JDBC操作
  7. 奇葩的UI引用LayoutInflater.from问题
  8. 宿州学院省二计算机什么时候报名,宿州学院2017年9月全国计算机等级考试报名时间及报名网址公布...
  9. 【华为云技术分享】技术干货丨通过wrap malloc定位C/C++的内存泄漏问题
  10. Chem 3D模型的参数值更改方法
  11. fpga多摩川编码器开源代码_F28379D之CLB解码多摩川编码器1——入手小知识(原创)...
  12. 网络安全kali渗透学习 web渗透入门 Google搜索引擎的使用技巧
  13. thinkpad l470 一种键盘错乱解决方法
  14. android MediaPlayer SurfaceView 网络视频播放器
  15. 【九校3D2T3】世界第一的猛汉王
  16. 压缩软件替代方案BandZip
  17. 百度地图比例尺与级别关系
  18. echarty轴自定义显示不全,ECharts图表X轴或者Y轴单位内容显示不全
  19. Tair 对 Redis 引擎架构之争的看法
  20. FP7195转模拟恒流调光芯片在机器视觉光源的应用优势

热门文章

  1. 多个 本地仓库_【运维工具】搭建npm私有镜像仓库,天下苦于npm build久矣
  2. python concurrent queue_Python的并发并行[2] - 队列[0] - queue 模块
  3. mysql修改用户密码1133_后台修改mysql用户密码后无法连接
  4. 计算机键盘打出来都是英语大写怎么办,电脑键盘上大小写怎么切换
  5. php 500 yii,yii2.0出现500错误怎么办
  6. 如何在Node.js的httpServer中接收前端发送的arraybuffer数据
  7. MySql数据库连接种类
  8. matlab实现双边滤波_【他山之石】pytorch 实现双边滤波
  9. easy excel根据行列excel_Excel函数如何根据地级市匹配所在省份计算快递费用
  10. java制作oracle程序,Java程序操作Oracle两种方式之简单实现