二分图最大匹配算法-Hopcroft-Karp模板
时间复杂度:O((√V)*E)
#include<stdio.h>
#include<string.h>
const int N=,M=,INF=0x3f3f3f3f;
int dx[N],dy[M],sx[N],sy[M],p[N],q[N],a[N][M],l,r,n,m,d;
int bfs()
{
l=r=;
memset(dx,-,sizeof(dx));
memset(dy,-,sizeof(dy));
int i,u;d=INF;
for(i=;i<=n;i++)
{
if(sx[i]==-)
{
q[++r]=i;
dx[i]=;
}
}
while(l<r)
{
u=q[++l];
if(dx[u]>d) break;
for(i=;i<=m;i++)
{
if(a[u][i]&&dy[i]==-)
{
dy[i]=dx[u]+;
if(sy[i]==-) d=dy[i];
else
{
dx[sy[i]]=dy[i]+;
q[++r]=sy[i];
}
}
}
}
return d!=INF;
}
int dfs(int u)
{
for(int i=;i<=m;i++)
{
if(a[u][i]&&!p[i]&&dy[i]==dx[u]+)
{
p[i]=;
if(sy[i]!=-&&dy[i]==d) continue;
if(sy[i]==-||dfs(sy[i]))
{
sy[i]=u,sx[u]=i;
return ;
}
}
}
return ;
}
int HK_maxMatch()
{
int ans=,i;
memset(sx,-,sizeof(sx));
memset(sy,-,sizeof(sy));
while(bfs())
{
memset(p,,sizeof(p));
for(i=;i<=n;i++)
{
if(sx[i]==-)
{
ans+=dfs(i);
}
}
}
return ans;
}
H-K
二分图最大匹配算法-Hopcroft-Karp模板的更多相关文章
- hdu2389二分图之Hopcroft Karp算法
You're giving a party in the garden of your villa by the sea. The party is a huge success, and every ...
- 二分图匹配之KM求二分图最佳匹配算法
参考网址:http://blog.163.com/suntroop@yeah/blog/static/17012103120115185927194/ 对于具有二部划分( V1, V2 )的加权完全二 ...
- 【二分图】P3386洛谷模板
题目背景 二分图 题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 输入输出格式 输入格式: 第一行,n,m,e 第二至e+1行,每行两个正整数u,v,表示u,v有一条连边 ...
- 牛客多校第五场 E room 二分图匹配 KM算法模板
链接:https://www.nowcoder.com/acm/contest/143/E来源:牛客网 Nowcoder University has 4n students and n dormit ...
- luogu P3386 【模板】二分图匹配
二次联通门 : luogu P3386 [模板]二分图匹配 /* luogu P3386 [模板]二分图匹配 最大流 设置源点,汇点,连到每条边上 跑一边最大流即可 */ #include <i ...
- *HDU 1054 二分图
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu3729 I'm Telling the Truth (二分图的最大匹配)
http://acm.hdu.edu.cn/showproblem.php?pid=3729 I'm Telling the Truth Time Limit: 2000/1000 MS (Java/ ...
- UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法
二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). ...
- [HNOI 2013] 消毒 (搜索,二分图匹配)
题目大意 一个a * b * c(a * b * c <= 5000)大小的长方体中有一些点需要被覆盖,每次可以选择任意大小的长方体,覆盖其中的点,产生的代价为这个长方体长宽高中最小的那个的长度 ...
随机推荐
- pygame for python3.3
pygame的更新慢的令人发指,我最初使用的python是3.4版本的,无何奈何pygame不支持3.4,甚至官网只有3.2版本的.我于是将各种版本试了一遍,出现各种问题,同时我比较钟爱3.x版本,最 ...
- oschina github使用指南
我的github仓库开通,https://git.oschina.net/zhjh256. 1.打开https://git.oschina.net/signup,没有账号的话,则新创建账号. 2.从h ...
- Android 提供的一系列辅助系统开发工具
除了软件本身的代码之外,Android 还提供了一系列工具来辅助系统开发,这些主要的工具包括: aapt(AndroidAssetPackagingTool):用于建立zip兼容的包(zip.jar. ...
- 【GOF23设计模式】组合模式
来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_组合模式.树状结构.杀毒软件架构.JUnite底层架构.常见开发场景 package com.test.composite ...
- 区别CALL SCREEN/SET SCREEN/LEAVE TO SCREEN
分类: 1,CALL SCREEN XXXX将在Screen调用栈(CALL STACK)上面添加一层调用(进栈),调用XXXX的PBO和PAI,如果XXXX的Next Screen不为0,那么将继续 ...
- CRM ribbon按钮上引用JS库
在CRM ribbion 按钮上引用 javascript库文件实验,怎么要引用javascript库文件.实验 加载完ribbbion 按钮后立即执行 引用的库文件 (function(){ ale ...
- SharePoint 2013 排错之"Code blocks are not allowed in this file"
今天,设置页面布局的自定义母版页时,设置完了以后保存,然后预览报错,错误如下截图:删掉自定义母版页的MasterPageFile属性,页面依然报错:感觉甚是奇怪,因为有版本控制,还原为最初的版本,依然 ...
- UITableView删除添加和移动
#import "RootTableViewController.h" @interface RootTableViewController () @property (nonat ...
- 【原】error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::string'
今天遇到一个非常难以排查的BUG,谷歌度娘都问过了依旧无解,最后自己重新尝试之后找到解决方案: 先看一下报错信息: 1>.\lenz.cpp(2197) error C2679: binary ...
- 我遇到的CocoaPods的问题(也许后期会解决,持续更新)
在此博客中写下两类关于CocoaPods的问题: 未解决的问题:可以留着以后解决 已经解决的问题:可以备份以后回头再参考解决同样的问题 <已解决的问题> 解决方法是:pod install ...