整理的算法模板合集: ACM模板


题目描述
给定一张二分图,左右部均有 n 个点,共有 m 条带权边,且保证有完美匹配。
求一种完美匹配的方案,使得最终匹配边的边权之和最大。
//Data
const int N=500;
int n,m,e[N+7][N+7];//KM
int mb[N+7],vb[N+7],ka[N+7],kb[N+7],p[N+7],c[N+7];
int qf,qb,q[N+7];
void Bfs(int u){int a,v=0,vl=0,d;for(int i=1;i<=n;i++) p[i]=0,c[i]=inf;mb[v]=u;do {a=mb[v],d=inf,vb[v]=1;for(int b=1;b<=n;b++)if(!vb[b]){if(c[b]>ka[a]+kb[b]-e[a][b])c[b]=ka[a]+kb[b]-e[a][b],p[b]=v;if(c[b]<d) d=c[b],vl=b;}for(int b=0;b<=n;b++)if(vb[b]) ka[mb[b]]-=d,kb[b]+=d;else c[b]-=d;v=vl;} while(mb[v]);while(v) mb[v]=mb[p[v]],v=p[v];
}
ll KM(){for(int i=1;i<=n;i++) mb[i]=ka[i]=kb[i]=0;for(int a=1;a<=n;a++){for(int b=1;b<=n;b++) vb[b]=0;Bfs(a);}ll res=0;for(int b=1;b<=n;b++) res+=e[mb[b]][b];return res;
}//Main
int main(){n=ri,m=ri;for(int a=1;a<=n;a++)for(int b=1;b<=n;b++) e[a][b]=-inf;for(int i=1;i<=m;i++){int u=ri,v=ri,w=ri;e[u][v]=max(e[u][v],w);}printf("%lld\n",KM());for(int u=1;u<=n;u++) printf("%d ",mb[u]);puts("");return 0;
}

模板 - KM算法(O(n^3))(二分图最大权完美匹配)相关推荐

  1. 二分图的最佳完美匹配(模板)

    二分图的最佳完美匹配,也就是带权值的无向二分图中权值之和最大的完美匹配,整个图分为两个不相交的集合x和y,采用KM算法求解,也称匈牙利算法. 时间复杂度为O(n^3) typedef int type ...

  2. UVA 1349 Optimal Bus Route Design (二分图最小权完美匹配)

    恰好属于一个圈,那等价与每个点有唯一的前驱和后继,这让人想到了二分图, 把一个点拆开,点的前驱作为S集和点的后继作为T集,然后连边,跑二分图最小权完美匹配. 写的费用流..最大权完美匹配KM算法没看懂 ...

  3. UVA1411 Ants(带权二分图的最大完美匹配、zkw费用流)

    题解 给定一些黑点白点,要求一个黑点链接一个白点并且线段不相交(转成二分图最大权匹配使用费用流解决)<训练指南>P351 输出方案:满流即为答案(满流是指这条路的流量跑满了,也就是说edg ...

  4. hdu 2255二分图最大权值匹配的KM 算法

    对KM的深入理解请看以下博客(写的不错的):http://blog.sina.com.cn/s/blog_691ce2b701016reh.html 我的理解:如有错误,请大牛指正!! 1.KM()算 ...

  5. 【算法笔记】二分图最大权匹配 - KM算法(dfs版O(n4) + bfs版O(n3))

    整理的算法模板合集: ACM模板 匈牙利算法又称为 KM 算法,可以在 O(n3)O(n^3)O(n3) 时间内求出二分图的 最大权完美匹配 . 考虑到二分图中两个集合中的点并不总是相同,为了能应用 ...

  6. NOI数据结构:KM算法

    NOI数据结构:二分图的最佳匹配KM算法 二分图匹配之最佳匹配--KM算法 - ~Lanly~ - 博客园 二分图最佳完美匹配-KM算法_ZigZagK的博客-CSDN博客_完美匹配2 二分图的最佳完 ...

  7. HDU 1853 HDU 3488【有向环最小权值覆盖问题 】带权二分图匹配 KM算法

    HDU 1853 & HDU 3488[有向环最小权值覆盖问题 ]最小费用最大流 In the kingdom of Henryy, there are N (2 <= N <= ...

  8. 二分图(三)——KM算法

    写完这一章,大概二分图的匹配问题也该完结了吧. 其实我自己现在对KM算法也是刚刚理解,有理解不到位之处还请大家指出. KM算法:求在一个二分图的完备匹配中的最大权值匹配的算法.(下文简称为最佳完备匹配 ...

  9. KM算法(DFS版,优化DFS版,BFS版)

    KM算法的前提是图存在一个完备匹配,因此用于二分图的最佳匹配问题.如果是最大权匹配问题,可以通过加权值为0的边来可以将图的最佳匹配与最大全匹配统一起来:如果是最小权匹配问题,可以通过加权值为-INF的 ...

最新文章

  1. python 爬虫 记录
  2. 【Python】青少年蓝桥杯_每日一题_7.03_输出符合要求的字母
  3. c/c++在windows下获取时间和计算时间差的几种方法总结
  4. VTK:PolyData之WeightedTransformFilter
  5. 数值计算与优化(共轭梯度法和QR)
  6. 听云数据库管理平台NetopGO简介
  7. 直播P2P技术1-技术入门
  8. sv_labs学习笔记 专栏说明博文目录
  9. 平安科技移动开发二队技术周报(第十一期)
  10. c语言语法——c语言时间类型
  11. JavaWbe学习总结之jQuery
  12. iPhone手机屏幕突然变暗该怎么办?
  13. 分区助手服务器,分区助手专业版
  14. 技术美术知识学习4200:SSAO算法
  15. 在OpenCV里车牌识别的方法1
  16. 【2022年玄武云科技AI算法岗秋招面试记录】
  17. Python3 etree, requests库抓取bt
  18. 项目助理是打杂的吗_应届生如何着手准备应聘产品助理?
  19. 【历史上的今天】5 月 26 日:美国首个计算机软件程序专利;苹果市值首次超越微软;Wiki 的发明者出生
  20. 软件测试-柠檬班python全栈自动化50期测试学习笔记分享

热门文章

  1. 微软资深算法工程师为AI初学者量身打造的机器学习入门书上市啦!
  2. 利用OpenCV 基于Inception模型图像分类
  3. 下载、安装、配置 java jdk1.8
  4. PWA项目实战分享(听书APP)
  5. Flutter——设置appBar的高度
  6. Google 开发新的开源系统 Fuchsia
  7. Nimbus/Supervisor本地目录结构
  8. 创建Material Design风格的Android应用--使用Drawable
  9. Golang 单例模式 singleton pattern
  10. Sweeter Than Fiction - Taylor Swift