算法模板——二分图匹配
实现功能为二分图匹配
原理:匈牙利算法,核心思想——匹配上了就配,没直接匹配上也要通过前面的腾出位置让这个匹配上(详见:趣写算法系列之——匈牙利算法)
本程序以Codevs2776为例
详见Codevs2776
1 type 2 point=^node; 3 node=record 4 g:longint; 5 next:point; 6 end; 7 var 8 i,j,k,l,m,n:longint; 9 c,f:array[0..1000] of longint; 10 a:array[0..1000] of point; 11 procedure add(x,y:longint);inline; 12 var p:point; 13 begin 14 new(p); 15 p^.g:=y; 16 p^.next:=a[x]; 17 a[x]:=p; 18 end; 19 function check(x:longint):boolean;inline; 20 var p:point; 21 begin 22 p:=a[x]; 23 while p<>nil do 24 begin 25 if f[p^.g]<>i then 26 begin 27 f[p^.g]:=i; 28 if c[p^.g]=0 then 29 begin 30 c[p^.g]:=x; 31 exit(true); 32 end 33 else if check(c[p^.g]) then 34 begin 35 c[p^.g]:=x; 36 exit(true); 37 end; 38 end; 39 p:=p^.next; 40 end; 41 exit(false); 42 end; 43 44 {$IFDEF WINDOWS}{$R wiki2776.rc}{$ENDIF} 45 46 begin 47 readln(n,m); 48 for i:=1 to n do 49 begin 50 a[i]:=nil; 51 while not(eoln) do 52 begin 53 read(j); 54 if j=0 then break; 55 add(i,j); 56 end; 57 readln; 58 end; 59 fillchar(c,sizeof(c),0); 60 fillchar(f,sizeof(f),0);l:=0; 61 for i:=1 to n do 62 if check(i) then inc(l); 63 writeln(l); 64 readln; 65 end. 66
转载于:https://www.cnblogs.com/HansBug/p/4234898.html
算法模板——二分图匹配相关推荐
- 匈牙利算法解决二分图匹配问题
匈牙利算法是由匈牙利数学家Edmonds于1965年提出.匈牙利算法是基于Hall定理中充分性证明的思想,它是二分图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的 ...
- 算法:ACM二分图匹配 HDU2063
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 摘录于互联网,原创作者redraiment,很详细的二分图匹配入门资料! 2063 过山车 Pr ...
- 【HDU - 5090】Game with Pearls (匈牙利算法,二分图匹配)
题干: Tom and Jerry are playing a game with tubes and pearls. The rule of the game is: 1) Tom and Jerr ...
- 【 HDU - 5093】Battle ships(匈牙利算法,二分图匹配)
题干: Dear contestant, now you are an excellent navy commander, who is responsible of a tough mission ...
- 【小算法】二分图匹配之匈牙利算法详解(图例说明,代码亲测可用)
在软件开发领域,任务指派和数据关联是一种常见业务需求,比如买卖订单的匹配,共享出行的人车匹配,及自动驾驶领域中目标追踪. 这都牵扯到一种技术,那就是数据关联,而匈牙利算法就是解决此类问题最典型的算法, ...
- P3386 【模板】二分图匹配(匈牙利算法)
展开 题目背景 二分图 感谢@一扶苏一 提供的hack数据 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入格式 第一行,n,m,e 第二至e+1行,每行两个正整数u ...
- 经典网络流题目模板(P3376 + P2756 + P3381 : 最大流 + 二分图匹配 + 最小费用最大流)...
题目来源 P3376 [模板]网络最大流 P2756 飞行员配对方案问题 P3381 [模板]最小费用最大流 最大流 最大流问题是网络流的经典类型之一,用处广泛,个人认为网络流问题最具特点的操作就是建 ...
- 洛谷 P3386 【模板】二分图匹配
洛谷 P3386 [模板]二分图匹配 题目 题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行 ...
- 利用匈牙利算法Hopcroft-Karp算法解决二分图中的最大二分匹配问题 例poj 1469 COURSES...
首先介绍一下题意:已知,有N个学生和P门课程,每个学生可以选0门,1门或者多门课程,要求在N个学生中选出P个学生使得这P个学生与P门课程一一对应. 这个问题既可以利用最大流算法解决也可以用匈牙利算法解 ...
最新文章
- 由粗到精学习LVI-SAM基础:多传感器内外参标定原理
- 文件输入输出和string流
- python自带超参调优包
- linux tcp 包大小,linux – 通过大量连接和小数据包流量高的千兆网络提高TCP性能...
- Hadoop之MapReduce工作流程
- IOS 6 之后 Required background modes
- mysql查询每月、每天订单金额
- 当自己颓废的时候怎么激励自己?
- Tensorflow精进之路(二):两层卷积神经网络模型训练MNIST
- java 对错代厔_如何获得汉字拼音的首字母序列
- Java的文件读写操作
- Pda 数据库同步问题
- kodi树莓派_树莓派投屏秒变家庭影院(安装 kodi
- 小程序中引用阿里云图标库
- 时统ptp_IEEE1588 PTP对时系统原理及特点
- Python图像绘制字符画
- win10如何修改计算机管理员的名字,hp win10系统管理员名称改了后怎么改回去
- 微课程学习平台(微课平台)-特色功能(移动学习解决方案)
- 详解 Python qrcode 二维码模块
- 我猜中了开始 也猜中了结局
热门文章
- SparkStreaming读取Kakfa数据时发生OffsetOutOfRangeException异常
- 2109春第一次课程设计实验报告
- springMvc的执行流程(源码分析)
- centos 7 部署 open-falcon 0.2.0
- JavaWeb基础—数据库连接池DBCP、C3P0
- Hibernate的DetachedCriteria使用(含Criteria)
- 优秀学生是如何高效利用时间的?
- Zend Framework数据库操作
- android-技术教程-调试程序的基础,在控制台上打印出想打印的东西 转载
- VC++2005 CString和char*的相互转换