861. 二分图的最大匹配

news/2025/2/23 0:31:59/

给定一个二分图,其中左半部包含 n1n1 个点(编号 1∼n11∼n1),右半部包含 n2n2 个点(编号 1∼n21∼n2),二分图共包含 mm 条边。

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

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

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

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

输入格式

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

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

输出格式

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

数据范围

1≤n1,n2≤5001≤n1,n2≤500,
1≤u≤n11≤u≤n1,
1≤v≤n21≤v≤n2,
1≤m≤1051≤m≤105

输入样例:

2 2 4
1 1
1 2
2 1
2 2

输出样例:

2
#include <cstring>
#include <iostream>
#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()
{scanf("%d%d%d", &n1, &n2, &m);memset(h, -1, sizeof h);while (m -- ){int a, b;scanf("%d%d", &a, &b);add(a, b);}int res = 0;for (int i = 1; i <= n1; i ++ ){memset(st, false, sizeof st);if (find(i)) res ++ ;}printf("%d\n", res);return 0;
}

 


http://www.ppmy.cn/news/675938.html

相关文章

CEA-861-D infoframe

1. infoframe是什么&#xff1f; Various types of auxiliary data can be carried from the Source to the DTV Monitor using InfoFrames. This section describes the InfoFrames that have been defined so far 将source端的auxiliary信息通过接口发送到sink端。 sink端应…

CTA-861标准解析EDID的VSDB与VDB

之前在某项目上做屏幕自适应分辨率时&#xff0c;按照vesa标准解析edid得出的分辨率不全导致自适应功能概率性失效&#xff0c;换为CTA 861标准解析后功能正常。此功能的代码对数据结构知识的要求不高&#xff0c;但是对C语言能力要求较高&#xff0c;特别是数位移、临界值的判…

LeetCode第 861 题:翻转矩阵后的得分(C++)

861. 翻转矩阵后的得分 - 力扣&#xff08;LeetCode&#xff09; 可以进行的操作是行变换或列变换&#xff0c;最终的目的是要使得最后的数字和最大。 行变换只会影响一个数字&#xff08;该行的数字&#xff09;。由于矩阵的 0/1 呈现的是二进制格式&#xff08;数字是按照行…

Angular实现一个简单的带tabs选项卡切换的首页导航功能

Angular版本&#xff1a;16.1.1 项目结构&#xff1a; angular.json配置&#xff1a; {"$schema": "./node_modules/angular/cli/lib/config/schema.json","version": 1,"newProjectRoot": "projects","projects"…

leetcode周赛补题 6.25

第107场双周赛补题 6892. 最大字符串配对数目 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;暴力模拟 class Solution { public:bool check(string a, string b){for(int i 0; i < 2; i ) if(a[i] ! b[1 - i]) return false;return true;}int maximumNumber…

密码学读书笔记系列(三):《商用密码应用与安全性评估》

密码学读书笔记系列&#xff08;三&#xff09;&#xff1a;《商用密码应用与安全性评估》 思考/前言第1章 密码基础知识1.1 密码应用概述1.2 密码应用安全性评估&#xff08;密评&#xff09;的基本原理1.3 密码技术发展1.4 密码算法1.5 密钥管理1.6 密码协议1.7 密码功能实现…

CSDN会员服务协议

特别提示 本协议系由北京创新乐知网络技术有限公司及其关联公司&#xff08;以下简称“CSDN”&#xff09;与所有使用CSDN会员服务的主体&#xff08;包括但不限于个人、团队等&#xff09;&#xff08;以下简称“用户”&#xff09;对CSDN会员服务的使用及相关服务所订立的有…

至少12亿元收支差,分析运营商7大数据产品应用

本文不讨论运营商在大数据的应用上暂时的颓势&#xff0c;也不评击其拥有金库却见不着有数的着的商业模式。或许是因为运营商们探索时间起步较晚&#xff1b;也可能由于运营商对于如何开放用户数据还没想明白&#xff1b;又或者是历史遗留的用户数据还存在业务线条分割、区域分…