二分图最大权完美匹配 KM算法

news/2026/2/11 4:41:36/文章来源:https://www.cnblogs.com/xdhking/p/19130128

image

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
#define LL long long
#define N 510
#define INF 1e12
int n,m;
int match[N];//右点匹配了哪个左点
int va[N],vb[N];//标记是否在交替路中
LL la[N],lb[N];//左顶标,右顶标
LL w[N][N],d[N];//维护更新的delta值bool dfs(int x){va[x]=1; //x在交替路中for(int y=1;y<=n;y++){if(!vb[y]){if(la[x]+lb[y]-w[x][y]==0){//相等子图vb[y]=1; //y在交替路中if(!match[y]||dfs(match[y])){match[y]=x; //配对return 1;}}else //不是相等子图则记录最小的d[y]d[y]=min(d[y],la[x]+lb[y]-w[x][y]);}}return 0;
}
LL KM(){//左顶标取i的出边的最大边权for(int i=1;i<=n;i++) la[i]=-INF;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) la[i]=max(la[i],w[i][j]);for(int i=1;i<=n;i++) lb[i]=0;      for(int i=1;i<=n;i++){while(true){//直到左点i找到匹配fill(va+1,va+n+1,0);fill(vb+1,vb+n+1,0);fill(d+1,d+n+1,INF);if(dfs(i))break;LL delta=INF;for(int j=1;j<=n;j++)if(!vb[j])delta=min(delta,d[j]);for(int j=1;j<=n;j++){//修改顶标if(va[j])la[j]-=delta;if(vb[j])lb[j]+=delta;}}}LL res=0;for(int i=1;i<=n;i++)res+=w[match[i]][i];    return res;
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) w[i][j]=-INF; for(int i=1;i<=m;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);w[x][y]=z;}printf("%lld\n",KM());for(int i=1;i<=n;i++) printf("%d ",match[i]);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/174118.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDM弹窗解决 - -一叶知秋

IDM弹窗解决1、打开任务管理器,结束IDM任务(一定要结束全部的IDM任务)2、在控制面板中,打开 管理工具(有搜索)3、然后打开 本地安全策略4、找到 软件限制策略->其它规则,如果 软件限制策略 下面没有选项,就…

PHP+MySQL开发语言 在线下单订水送水小脚本源码及搭建指南

PHP+MySQL开发语言 在线下单订水送水小脚本源码及搭建指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

深入解析:video-audio-extractor:视频转换为音频

深入解析:video-audio-extractor:视频转换为音频pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

详细介绍:运行shell脚本时报错/bin/bash^M: 解释器错误: 没有那个文件或目录

详细介绍:运行shell脚本时报错/bin/bash^M: 解释器错误: 没有那个文件或目录pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fam…

ubuntu20.04服务器版安装中文输入法分享

1/菜鸟,学生党,旧机,安装好ubuntu20.04服务器版(主要为旧卡GTX660和CUDA11.4考虑)后,发现旧机焕发了新春,挺好用的,哈哈; 2/为了能方便使用微信,就追加了xubuntu图形界面 & wechat,看微信消息是非常的方便了,可是…

DeCLIP

1、第一页 密集视觉预测任务受到对预定义类别的依赖的限制,限制了它们在真实世界场景中的实用性。 视觉语言模型在开放词汇任务中显示出良好前景,但它们直接应用于密集预测任务往往性能不佳。 CLIP的图像token难以有…

在AI技术唾手可得的时代,挖掘新需求成为核心竞争力——某知名CTF资源库需求洞察

该项目是一个精心整理的CTF资源集合,涵盖创建和解题所需的各类工具框架,包括取证分析、密码学、逆向工程、网络攻防等多个安全领域,为安全研究人员和CTF爱好者提供一站式资源导航。a.内容描述核心功能定位:该项目是…

如何测试台式机电源

如何测试台式机电源如何测试台式机电源https://mbd.baidu.com/newspage/data/videolanding?nid=sv_5217672129161259963&sourceFrom=qmj网站:http://shibowl.topgithub:https://github.com/hanbinjxnc博客园:h…

折腾笔记[31]-在线转换吉卜力风格图片

在线转换吉卜力风格图片.主要是利用浏览器的隐私浏览(无痕)模式获取免费的试用额度(credits).摘要 在线转换吉卜力风格图片.主要是利用浏览器的隐私浏览(无痕)模式获取免费的试用额度(credits). 使用方式 [https://ghi…

完整教程:【网络安全 | 信息收集】灯塔(资产收集工具)安装教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

计算机视觉的现状与未来挑战

本文探讨计算机视觉技术的发展历程与当前面临的挑战,包括情感识别系统的局限性、上下文理解的重要性,以及生成对抗网络在虚拟场景构建中的应用前景。文章还介绍了视觉购物等实际应用场景。CVPR:理解图像意味着理解世…

#20232408 2025-2026-1《网络与系统攻防技术》实验一实验报告

北京电子科技学院(BESTI) 实 验 报 告课程名称: 网络与系统攻防技术实验序号: 实验一实验名称: 缓冲区溢出攻击学 号: 20232408姓 名: 李易骋指导老师: 王志强必修/选修: 选修实验日期:一、…

reLeetCode 热题 100- 239. 滑动窗口最大值 队列 - MKT

reLeetCode 热题 100- 239. 滑动窗口最大值 队列 队列记录最大值集合 方法一1 枚举 速度嘛 n*k方法2 map 记录频次 通过速度慢方法3 队列记录当前最大值 最快class Solution { public:vector<int> maxSlidingWin…

ToDo-List EveryDay

健康任务待办事项.health-todo-container * { box-sizing:border-box; margin:0; padding:0; } .health-todo-header { text-align:center; margin:1rem 0; } .health-todo-title { font-size:2.5rem; font-weight:bol…

详细介绍:ArcGIS Pro字段计算器与计算几何不可用,显示灰色

详细介绍:ArcGIS Pro字段计算器与计算几何不可用,显示灰色pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

Wails + Go + React跨平台RTSP播放器分享

最近用Wails框架开发了一个跨平台的RTSP播放器,通过WebRTC技术实现了RTSP到Web端的低延迟转换,效果非常不错。今天就来分享一下整个开发过程和技术方案。 🖼️ 平台预览Windows 平台 macOS 平台🎯 项目背景 痛点…

网络与系统攻防实验报告一 20232408李易骋1

北京电子科技学院(BESTI) 实 验 报 告课程名称: 网络与系统攻防技术实验序号: 实验一实验名称: 缓冲区溢出攻击学 号: 20232408姓 名: 李易骋指导老师: 王志强必修/选修: 选修实验日期:一、…

深入解析:Starrocks Full GC日志分析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Hadoop 3.x 伪分布式 8088端口无法访问问题处理 - 实践

Hadoop 3.x 伪分布式 8088端口无法访问问题处理 - 实践2025-10-08 19:43 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; d…