HDU 2063过山车 二分图最大匹配 匈牙利算法

HDU 2063 过山车 【匈牙利算法,二分图最大匹配】 二分图最大匹配入门题,话不多说,看代码。 阅读详情

这题属于二分图算法的入门题目。

就是要求二分图的最大匹配。求解最大匹配的算法为匈牙利算法。其核心思想就是从左半点集逐个出发寻找增广路径,每找到

一条增广路径,匹配数就加一。可以证明当找不到增广路径是就得到了最大匹配。

详细解释请参阅:点击打开链接

 

其中,useif[]是在同一次寻找增广路径是有用。主要是由于递归。比如如果之前已用过右点集中的1,下一次就不能再用了。

开始时初始化num=0,表示初始匹配为0。即表明左点集中每一点都是未用,也即都可以作为寻找增广路径的起点。

 

AC代码:

#include<iostream>
using namespace std;

const int MAX=501;
int lNum,rNum,k;
int link[MAX];    //记录当前与y点相连的x点
bool map[MAX][MAX];  //存储二分图,x到y有路径,则map[x][y]=true;反之,为false
bool useif[MAX];   //记录y中节点是否使用了(也就是男生是否已经被选)

void getMap()  //存图
{
	memset(map,false,sizeof(map));

	int x,y;
	for(int i=1;i<=k;i++)
	{
		cin>>x>>y;
		map[x][y]=true;
	}
}

bool can(int t)
{
	for(int i=1;i<=lNum;i++)
	{
		if(!useif[i] && map[t][i])
		{
			useif[i]=true;
			if(link[i]==-1 || can(link[i]))
			{
				link[i]=t;
				return true;
			}
		}
	}

	return false;
}

int maxMatch()
{
	int num=0;

	memset(link,0xff,sizeof(link));  //未连的计为-1
	for(int i=1;i<=rNum;i++)   //从右边点(女生)出发依次寻找增广路径
	{
		memset(useif,false,sizeof(useif));
		if(can(i)) num++;
	}

	return num;
}

int main()
{
	while(cin>>k,k)
	{
		cin>>rNum>>lNum;

		getMap();

		cout<<maxMatch()<<endl;
	}

	return 0;
}


 

 

 

匈牙利算法解析:二分图最大匹配问题实战 二分图匹配是图论中的经典问题,用于解决两类对象之间的最优配对需求。匈牙利算法通过寻找增广路径的策略,能在O(VE)时间复杂度内解决最大匹配问题。该算法在稀疏图上表现优异,适用于任务分配、资源调度等实际场景。以杭电OJ 2063过山车问题为例,展示了如何将乘客座位偏好建模为二分图,并通过邻接表存储和递归实现高效求解。算法实现中需注意顶点编号处理、重复边过滤等细节,其核心思想也可扩展应用于带权匹配等变种问题。 阅读详情

相关推荐

手把手教你用MATLAB/Simulink模拟微电网潮流方向(附代码下载)

本文提供了一份详细的MATLAB/Simulink微电网潮流仿真实战指南。通过手把手教学,指导读者从零搭建包含光伏、储能和负荷的微电网模型,并模拟并网、孤岛等多种运行场景下的潮流方向变化。文章核心在于利用Simulink实现微电网的动态潮流分析与可视化,帮助工程师深入理解分布式能源系统中的功率平衡与控制策略。

weixin_28314575的博客 108

HDU 2063 过山车 二分图 最大匹配 匈牙利算法

递归 #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #define mod 1000000007 using namespace std; const int N = 506; int G[N][N], vis[N], pre[N]; int...

xiongshuxian2019的博客 205

文档多模态识别工具对比:MinerU、PaddleOCR、Marker

本文对比了三款文档多模态识别工具:MinerU、PaddleOCR和Marker。MinerU专注于中文文档的端到端解析,支持复杂元素提取和结构化输出,适合中文论文和教材解析。PaddleOCR是通用OCR工具包,支持多语言和全流程任务,适用于发票、车牌等图像OCR。Marker则注重多语言支持和轻量化部署,适合英文论文和技术文档的快速转换。三者在核心技术、中文优化、表格处理、输出格式、部署复杂度和适用语言等方面各有优劣。选型建议根据具体需求:MinerU适合高精度中文解析,PaddleOCR适合定制化OC

朴拙科技的博客 4745

hdu 2063 过山车 二分图+最大匹配+匈牙利算法

一,二分图概念: 1,二分图: 二分图又称为二部图,它是图论中特殊的一种模型,令G=(v,E)是一个图, 若该图中节点能被分成两个不相交的两个子集:A,B。即: (AU B) =V    (A ⋂B)=ϕ。 且图中每一条边(x,y)所关联的两个顶点x,y分别属于A,B两个集合内。则称G为二分图。 2,匹配: 在图论中,匹配是图中的一个边集,在该边集中任何两条边没有共公共端点, (1)

漩涡梦幻 546

Sinutrain下载安装与开启OPC UA---kalrry

Sinutrain 开启 OPC UA 本教程只适用于版本,其他版本配置目录有所改变建议安装到默认路径,否则后期修改路径时候容易忽略细节本教程提供安装包为官方包,网上有些非官方包安装后容易出现授权问题,比如授权管理器无法启动,官方技术会建议你重装系统,很多时候是因为安装包非官方包在首次安装前,建议重启一遍系统。

kalrry 1万+

STM32H743 LAN8720网口配置避坑指南:用CubeMX v6.5.0快速搞定LWIP+FreeRTOS

本文详细介绍了使用CubeMX v6.5.0配置STM32H743与LAN8720网口的LWIP+FreeRTOS方案,涵盖硬件连接、时钟配置、ETH外设初始化及LWIP协议栈调优等关键步骤。特别针对常见陷阱提供解决方案,帮助开发者快速实现稳定网络通信,适用于嵌入式网络开发场景。

weixin_33739523的博客 359

hdu 2063 过山车 二分图最大匹配 匈牙利算法

Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。考虑到经费问题,boss刘决定只让找到partner的人去坐过山车,其他的.

Phantom_matter的博客 246

匈牙利算法,二分图最大基数匹配(过山车,hdu 2063)

参考博客:http://www.cnblogs.com/kuangbin/archive/2011/08/09/2132828.html 女生对男生有要求,但男生对女生无要求,即有求必应。因此有向边就变成了无向边。 在建立邻接矩阵MAP[u][v]时只建立有向边意思是女生u与男生v可以匹配,而女生v不一定和男生u匹配。 hungary()函数的意思是遍历所有女生,对每个女生尝试匹配,或许

xl2015190026的博客 906

Polyworks脚本开发学习笔记(一)-脚本开发环境

详细的总结和记录了利用Polyworks进行脚本开发的一些方法和心得

qq_43662503的博客 6817

IBM Storwize V3700存储维护实战:硬盘更换、电源模块热插拔与带外管理IP配置

在企业IT基础设施中,存储阵列是数据持久化的核心组件,其稳定运行直接关系到业务连续性。存储阵列通常采用RAID技术实现数据冗余,并通过热插拔、冗余电源等设计保障高可用性。带外管理则提供了独立于业务网络的硬件级监控与管理通道,是运维的关键手段。本次实战以一台IBM Storwize V3700存储阵列为例,详细记录了在业务低峰期,依据严谨的操作流程,对出现SMART预警的硬盘进行在线更换,并对有异响的冗余电源模块实施热插拔更换。针对管理界面强制要求设置VIP才能配置带外管理地址的限制,文章提供了通过SSH命令

weixin_29172963的博客 303

【二分图-匈牙利算法】HDU 2063 过山车

详解 下面是模板题: HDU 2063 过山车 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <cmath> #include <cstring> #include <string> #inc...

L_X_ 227

Python爬虫实战:利用Selenium与反反爬技术高效爬取企查查工商信息

本文将详细介绍如何使用Python最新爬虫技术(包括Selenium、Playwright、智能代理池等)爬取企查查工商信息数据。文章包含完整的代码实现、反反爬策略、数据解析与存储方案,以及法律合规性讨论,共计约8000字。企查查作为国内领先的企业信息查询平台,收录了超过2亿家企业的工商信息、司法信息、知识产权等数据。这些数据对于市场分析、商业决策等具有重要价值。法律边界提示禁止大规模爬取导致服务器过载不得绕过付费接口获取数据数据使用需遵守《个人信息保护法》商业用途需获得授权。

2201_76125261的博客 2237

hdu2063 过山车 二分图最大匹配 匈牙利算法

题解:利用dfs或者bfs不停找到增广路,然后用一个link[]数组记录匹配。如果link[i]没有在原匹配中,就更新匹配并加入其中,当此次增广路完成并更新完匹配,最大匹配值ans加1。 #include #include #include #include #include #include #include #include using namespace std; int v1,v2,an

ccsu_cherish 567

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

hdu 2063 过山车 二分图的最大匹配 匈牙利算法

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 #include #include #include using namespace std; int n,m,k; int link[505][505]; int used[505]; int boy[505]; int find(int x){ int i;

Mastli's Blog 606

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HDU 2063 过山车(匈牙利算法求二分图最大匹配)

http://acm.hdu.edu.cn/showproblem.php?pid=2063 因为要补某一道cf题特意来学一下。。。 匈牙利算法关键在于在能“反悔”的时候尽量“反悔”进行新的匹配以获得更多的匹配数。具体建议看代码很好看懂~ 1 #define bug(x) cout<<#x<<" is "<<x<<endl ...

weixin_30907935的博客 128

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【HDU2063】过山车(二分图最大匹配,匈牙利算法)

http://acm.hdu.edu.cn/showproblem.php?pid=2063过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 23810 Accepted Submission(s): 10371Problem

烟火 378

二分图匹配、最大权匹配

链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 匈牙利算法 #include <bits/stdc++.h> #define ll long long using namespace std; const int maxn=500+10; int k,m,n; int match[maxn],visit[maxn]; vector<int> G[maxn]; bool dfs(int u) { for(auto v :.

cheng__yu_的博客 456

HDU 2063 过山车(二分图最大匹配问题,匈牙利算法)

Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了。可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐。但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSno

Coldplay 565

HDU 2063 过山车(匈牙利算法)(二分图求最大匹配)

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16667    Accepted Submission(s): 7281 Problem Description RPG girls今天和大家一起去游乐场玩,终于可

huatian5的博客 541

hdu2063 过山车 二分图/最大匹配(匈牙利算法)

题目大意: 给出一串关系,求最大匹配数目大概思路: (拿样例说明) 6 3 3 1 1 1 2 1 3 2 1 2 3 3 1 0 循环女生: 1号女生能与1号男生匹配,count++; 2号女生发现1号男生已经与1号女生匹配过了,恰好1号女生能与2号男生匹配,那么让1号女生与2号男生匹配,2号女生与1号男生匹配,count++; 3号女生发现1号男生已经与2号女生匹配过

Remilitarize! 531

HDU 2063 过山车( 最大匹配 )

HDU 2063 过山车( 最大匹配 ) 题意:中文 思路:最大匹配 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<set> #inclu...

weixin_30883311的博客 90

HDU 2063 过山车(匈牙利算法 二分图的最小顶点覆盖 二分图最大匹配)

最裸的的匈牙利算法(不懂此算法及此算法

desire_ing的专栏 492

HDU2063过山车(匈牙利算法)

本文介绍了使用匈牙利算法解决二分图最大匹配问题的思路。题目要求将男女同学配对坐过山车,女生有特定的男生偏好。算法通过遍历女生,尝试为每个女生寻找可匹配的男生:若男生未被匹配或原配女生能找到其他匹配,则更新匹配关系。代码实现采用邻接表存储偏好关系,使用match数组记录匹配结果,st数组标记访问状态。最终统计最大匹配对数输出。该算法能高效解决类似二分图匹配问题。

2301_81026709的博客 192

二分图匹配(匈牙利算法)

ios::sync_with_stdio(false); 的使用 https://blog.youkuaiyun.com/yujuan_mao/article/details/8119529 过山车 https://blog.youkuaiyun.com/mengxiang000000/article/details/52199146 1 #include <...

104
上一篇: HDU 4006 The kth great number
下一篇: HDU 1151 Air Aaid 最小路径覆盖
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值