【AcWing】861. 二分图的最大匹配(匈牙利算法)
匈牙利算法,他可以在比较快的时间复杂度之内告诉我们左边和右边成功匹配的最大数是多少
匹配指的是边的数量,成功的匹配指的是两个未被使用的点之间存在一条边(就不存在两条边共用了一个点的)。
匈牙利算法可以返回成功匹配的最大匹配数是多少。

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;const int N=510,M=1e5+10;
int h[N],e[M],ne[M],idx;
int match[N];//match表示的是这个妹子匹配的男生是谁,0代表没有匹配。
bool st[N];//表示这个女生是否考虑过
int n1,n2,m;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])){//妹子没有匹配的男生 或 这个男生可以找到其他的妹子代替//如果这个被替换妹子的男生的其他相连的女生被匹配了的话,会让匹配的那个男生再去找其他妹子,就是套娃,牵一发动所有有关系的人。每个男生进入find都会对已经被考虑的妹子变为true,不会造成重复考虑。match[j]=x;return true; }}}return false;
}int main(){cin>>n1>>n2>>m;memset(h,-1,sizeof h);while(m--){int a,b;cin>>a>>b;add(a,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. 二分图的最大匹配(匈牙利算法)
匈牙利算法,他可以在比较快的时间复杂度之内告诉我们左边和右边成功匹配的最大数是多少 匹配指的是边的数量,成功的匹配指的是两个未被使用的点之间存在一条边(就不存在两条边共用了一个点的)。 匈牙利算法可以返回成功匹配的最大匹配数是多少。 #incl…...
经验笔记:JSP(JavaServer Pages)
JSP(JavaServer Pages)经验笔记 JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许在HTML页面中嵌入Java代码,从而实现动态内容的生成。JSP与Servlet一样,都是Java EE平台的一部分&am…...
【零基础必看的数据库教程】——SQL WHERE 子句
WHERE 子句用于提取那些满足指定条件的记录,过滤记录。 SQL WHERE 语法: SELECT column1, column2, ... FROM table_name WHERE condition; 参数说明: column1, column2, ...:要选择的字段名称,可以为多个字段。如…...
vscode docker debug python
1. 安装Vscode插件 ”Docker“”Dev Containers““Remote - ssh” 2. 进入Docker环境 点击左侧 Docker图标,选择Containers 对容器进行右键启动 生成新页面直接进行选择文件路径即可,之后得操作均在容器内进行...
【Kubernetes】常见面试题汇总(四)
目录 11.简述 Kubernetes 集群相关组件? 12.简述 Kubernetes Rc 的机制? 11.简述 Kubernetes 集群相关组件? Kubernetes Master控制组件,调度管理整个系统(集群),包含如下组件: (1ÿ…...
MATLAB基础语法知识
环境的配置等等就不写了,网上还是有很多资源可以找,而且正版的要付费,我也是看的网上的搞定的。 一,初识MATLAB 1.1 MATLAB的优势 不需要过多了解各种数值计算方法的具体细节和计算公式,也不需要繁琐的底层编程。可…...
PopupInner源码分析 -- ant-design-vue系列
PopupInner源码分析 – ant-design-vue系列 1 综述 上一篇讲解了vc-align的工作原理,也就是对齐是如何完成的。这一篇主要讲述包裹 Align的组件:PopupInner组件是如何工作的。 PopupInner主要是对动画状态的管理,比如打开弹窗的时候&#…...
Maven 的 pom.xml 文件中<dependency> 元素及其各个参数的解释
在 Maven 的 pom.xml 文件中,<dependency> 标签用于定义项目依赖的外部库。每个 <dependency> 元素包含了一系列的子元素,这些子元素定义了依赖库的各种属性。下面是一个典型的 <dependency> 元素及其各个参数的解释: <…...
【信创】Linux终端禁用USB存储 _ 统信 _ 麒麟 _ 方德
原文链接:【信创】Linux终端禁用USB存储 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天给大家带来一篇关于在Linux终端下禁用USB存储设备的文章。禁用USB存储设备可以提高系统的安全性,防止未经授权的人员将数据拷贝到外部存储设备或…...
开放API接口时要注意的安全处理总结
开发API接口:开放给别人调用的接口。未经过安全处理的开发API接口安全弱点:数据窃取(密码等信息被窃取,盗刷,敏感信息的等)——RSA/DES加密: 签名机制在API接口中的应用:签名用于验证…...
FastGPT自定义插件的icon
最近研究FastGPT的自定义插件,经过好几天的折磨,终于实现了一个简单的发送邮件功能,但是呢在使用的时候发现插件的icon是默认的fastgpt的logo,那肯定得自定义一个啊。直接说方法: 1、自定义插件下面的template.json文件…...
SprinBoot+Vue旅游网站的设计与实现
目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质…...
代码随想录刷题day27丨455.分发饼干 ,376. 摆动序列 ,53. 最大子序和
代码随想录刷题day27丨455.分发饼干 ,376. 摆动序列 ,53. 最大子序和 1.贪心算法理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张&a…...
Detect It Easy
Detect It Easy(简称 DIE)项目的网址为 https://github.com/horsicq/Detect-It-Easy 下载完安装包后,直接双击die.exe即可进入到操作界面 工具介绍: 它可以用来检测程序架构和文件类型。如图所示。其中,「模式」说明程…...
c++开关灯
题目描述 现有 𝑛n 盏灯排成一排,从左到右依次编号为:11,22,……,𝑛n。然后依次执行 𝑚m 项操作。 操作分为两种: 指定一个区间 [𝑎,𝑏][a,b]&…...
DevOps实现CI/CD实战(六)- Jenkins集成k8s
十、 Jenkins集成k8s Jenkins在集成K8s之前,需要搭建k8s集群,具体搭建步骤,完整笔记 https://github.com/ITenderL/ITenderL.github.io/tree/main/docs/DevOps, 包括完整的DevOps的笔记。 1. 准备部署的yml文件 pipeline.yml …...
张雪峰:物联网行业迎高光时刻!如何选择?我们诚聘销售工程师!
作为一间10多年的物联网公司,各位求职人士可以看看我们其中一个招聘要求,和自己需求结合分析分析,希望对你们有所帮助。 【公司实力底蕴】 盈电智控物联网科技(广东)有限公司,2024年7月成立,是…...
利用多文件编程实现顺序表的创建,判满,插入,输出
文章目录 🍊自我介绍🍊利用多文件编程实现顺序表的创建,判满,插入,输出seqlist.cseqlist.hmain.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连ÿ…...
百度快照劫持之JS劫持诊断与恢复一例
劫持现象: 百度搜索结果中,被劫持网站出现在搜索结果中, 点击进入网站,网站显示正常,数秒后网站自动跳转到彩票网站f51688.com/ff6/。但是第二次点击搜索结果,正常进入网站缺不会跳转到彩票网站。 初步认…...
深入探讨Go语言中的切片与数组操作
在编程世界中,数组一直是非常流行的数据结构,主要有两个原因:其一是简单易懂,其二是非常灵活,可以存储多种不同类型的数据。在Go语言中,数组的用法有其独特的特点,但与此同时,Go语言…...
第3期 工程车辆目标检测数据集
第3期 目标检测——工程车辆数据集 一、研究背景与意义 工程车辆是建筑工程机械的核心组成部分,涵盖汽车吊、随车吊、挖掘机、推土机、压路机、工程抢险车等品类,承担着工程建设中的运载、挖掘、吊运、平整、抢修等关键工作,大幅提升了建筑工程施工效率,显著降低人力投入…...
5步释放Win11潜能:用Win11Debloat让系统性能提升60%的实战指南
5步释放Win11潜能:用Win11Debloat让系统性能提升60%的实战指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...
多任务学习进阶:从MMoE到PLE的模型演进与实战解析
1. 多任务学习基础与核心挑战 多任务学习(Multi-Task Learning, MTL)是机器学习领域的一个重要分支,它让单个模型同时学习多个相关任务。想象一下,你正在教一个学生同时学习数学和物理。如果这两个学科有共同的基础概念࿰…...
QuickSnap:提升三维建模效率的快速对齐工具——三维建模爱好者的精准对齐解决方案
QuickSnap:提升三维建模效率的快速对齐工具——三维建模爱好者的精准对齐解决方案 【免费下载链接】quicksnap Blender addon to quickly snap objects/vertices/points to object origins/vertices/points 项目地址: https://gitcode.com/gh_mirrors/qu/quicksna…...
Phi-3-mini-4k-instruct-gguf开发者案例:为微信小程序后端提供的轻量API服务
Phi-3-mini-4k-instruct-gguf开发者案例:为微信小程序后端提供的轻量API服务 1. 项目背景与需求 在开发微信小程序时,我们经常需要为前端提供智能文本处理能力,比如自动生成商品描述、智能客服回复、内容摘要等。传统方案要么需要调用第三方…...
父子进程变量地址相同值却不同?图解Linux写时拷贝与页表机制
父子进程变量地址相同值却不同?图解Linux写时拷贝与页表机制 你是否曾在Linux环境下遇到过这样的现象:通过fork()创建的子进程与父进程打印同一个全局变量的地址时,两者的地址值完全相同,但实际读取的变量值却不同?这个…...
GLM-4-9B-Chat-1M与Dify平台集成:无代码长文本处理系统搭建
GLM-4-9B-Chat-1M与Dify平台集成:无代码长文本处理系统搭建 1. 引言 想象一下,你手头有一份200页的法律合同需要快速审核,或者需要分析整本学术专著的核心观点,甚至要处理多语言的长篇商业文档。传统的人工处理方式耗时耗力&…...
AIVideo一站式AI长视频工具与Visual Studio的深度集成开发
AIVideo一站式AI长视频工具与Visual Studio的深度集成开发 1. 引言 作为一名长期使用Visual Studio进行开发的程序员,我经常遇到这样的痛点:想要录制一段代码演示视频,需要反复切换多个软件;想要制作项目介绍视频,得…...
实战-EdgeBoard赛事卡:从零部署飞桨模型到智能车竞赛
1. EdgeBoard赛事卡开箱与环境准备 第一次拿到EdgeBoard赛事专用卡时,这块巴掌大的小盒子让我有点怀疑——这么小的板子真能跑动智能车竞赛需要的视觉模型吗?拆开包装后发现,除了板卡本体,配件只有一根Type-C线,确实符…...
Qwen2.5-VL视觉定位模型支持多目标检测:一句话同时定位‘人和汽车’,效果惊艳
Qwen2.5-VL视觉定位模型支持多目标检测:一句话同时定位"人和汽车",效果惊艳 1. 视觉定位技术的新突破 在计算机视觉领域,视觉定位(Visual Grounding)技术正经历着革命性的进步。传统的目标检测方法需要预先…...
