Acwing 861-二分图的最大匹配
给定一个二分图,其中左半部包含 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<bits/stdc++.h>using namespace std;int n1,n2,m;
int match[510];
bool st[100010];
vector<int> G[510];bool find(int x)
{for(auto i :G[x]){if(!st[i]){st[i]=true;if(match[i]==0||find(match[i])){match[i]=x;return true;}}}return false;
}int main()
{ios::sync_with_stdio(false);cin>>n1>>n2>>m;while(m--){int a,b;cin>>a>>b;G[a].push_back(b);}int res=0;for(int i=1;i<=n1;i++){memset(st,false,sizeof st);if(find(i)) res++;}cout<<res<<endl;return 0;
}
Acwing 861-二分图的最大匹配相关推荐
- 匈牙利算法 -- Acwing 861. 二分图的最大匹配
Acwing 861. 二分图的最大匹配 题目描述 给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m条边. 数据保证任意一条边的 ...
- AcWing 861 二分图的最大匹配
题目描述: 给定一个二分图,其中左半部包含n1个点(编号1~n1),右半部包含n2个点(编号1~n2),二分图共包含m条边. 数据保证任意一条边的两个端点都不可能在同一部分中. 请你求出二分图的最大匹 ...
- AcWing 861. 二分图的最大匹配(Java)_匈牙利算法
二分图的最大匹配 ①. 题目 ②. 思路 ③. 学习点 ④. 代码实现 原题链接 ①. 题目 ②. 思路 匹配:在图论中,一个「匹配」是一个边的集合,其中任意两条边都没有公共顶点. 最大匹配:一个图所 ...
- AcWing 861. 二分图的最大匹配
AcWing 题目链接 匈牙利算法模板题 最大匹配:边数最多的匹配 完美匹配:所有顶点都匹配上了.完美匹配一定是最大匹配. 时间复杂度O(mn)O(mn)O(mn),实际运行效率远小于这个值. #in ...
- AcWing 861. 二分图的最大匹配(匈牙利算法)
题目连接 https://www.acwing.com/problem/content/863/ 思路 我们选择左半边或者右半边作为枚举点,然后对于当前的位置做一次判断如果当前位置的第一条边的女生已经 ...
- 861. 二分图的最大匹配
861. 二分图的最大匹配 给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边. 数据保证任意一条边的两个端点都不可能在同一 ...
- 168输出为861java_AcWing 861. 二分图的最大匹配-java-关键处注释
import java.io.*; import java.util.Arrays; class Main { static int n1, n2, m; //邻接表形式存放左边到右边的边 stati ...
- 用匈牙利算法求二分图的最大匹配
转载大神的!! 什么是二分图,什么是二分图的最大匹配,这些定义我就不讲了,网上随便都找得到.二分图的最大匹配有两种求法,第一种是最大流(我在此假设读者已有网络流的知识):第二种就是我现在要讲的匈牙利算 ...
- CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题
题意:求二分图的最大匹配数量 模版如下: //二分图匹配(匈牙利算法的DFS实现) //初始化:g[][]两边顶点的划分情况 //建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹 ...
- 二分图的最大匹配 匈牙利算法
基本概念 1.二分图: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别 ...
最新文章
- GPT3 api接口调用
- C语言实现将彩色bmp图像转化为灰图、灰度图像反色
- Leetcode | 3Sum
- api工程IOS学习:在IOS开发中使用GoogleMaps SDK
- handlebars.js {{#if}}中的逻辑运算符是有条件的
- 利用FFmpeg生成视频缩略图 2.1.8
- 王道考研——计算机组成原理(第二章 数据的表示和运算)
- Ribbon为什么要加入点对点直连的功能?如何操作?两句话玩转!
- Insertion Sort——打表找规律
- VUE config/index.js文件配置
- Python中字符串格式化:%和format
- SenchaTouch中出现数据覆盖 以及 “Cannot call method 'setData' of nul”l错误的可能原因
- EXCEL闪退的处理方法
- html5手机详情页,H5网页打开app内部详情页
- js数字金额转大写,javaScript数字金额转大写。
- 湖北省2021年高考成绩查询日期,湖北2021年高考查分及志愿填报时间公布!
- python中天天向上的力量实例
- TEK-DPO2024示波器使用手册
- JS的DOM操作1--获取元素与修改元素(附带动图案例)
- 如何使用sz命令下载较大文件到本地