当前位置: 首页 > news >正文

# 二分图最大匹配

二分图最大匹配

匈牙利算法 \(\mathcal O(mn)\)

匈牙利算法二分图最大匹配如下图所示:

这时, 我们一个一个看
首先先匹配第一个
我们总是找对方能连上的第一个进行匹配

匹配上一个之后,再匹配第二个

...

匹配到第三个时,发生了一点小状况

可以看到,第一个和第三个撞了

这是难道要死了这条心吗 \(???\)

不,我们要向第一个发起挑战

我们要谨慎地询问1还有没有第二选择:

有,则横刀夺爱,无,则束手就擒。

匹配好的图如图所示

最大匹配数为 \(3\)


以下是代码

#include<bits/stdc++.h>using namespace std;struct Node{int to, nxt;
} ed[100010];int hd[100010], cnt;void add(int u, int v){ed[++ cnt] = {v, hd[u]};hd[u] = cnt;
}int n1, n2, m, ans;
bool has[1010];
int match[1010];int find(int u){for(int i = hd[u]; i; i = ed[i].nxt){int v = ed[i].to - n1;if(!has[v]){has[v] = 1;if(match[v] == 0 || find(match[v])){match[v] = u;return 1;}} }return 0;
}int main(){scanf("%d%d%d", &n1, &n2, &m);for(int i = 1; i <= m; i ++){int a, b;scanf("%d%d", &a, &b);add(a, b + n1);}for(int i = 1; i <= n1; i ++){memset(has, 0, sizeof has);ans += find(i);}printf("%d\n", ans);return 0;
}
http://www.jsqmd.com/news/48538/

相关文章:

  • 几种常见的激光打标机及适配材质推荐选型 - 详解
  • 33号远征
  • 解码TCP
  • 死亡笔记 (Wordpress cms渗透)
  • iso 安装linux
  • isnotnull在oracle中的语法和使用技巧
  • 2025最新东莞AI搜索优化、GEO优化服务商TOP5评测:引领企业AI搜索增长新范式
  • 2025东莞最新数字人克隆厂商TOP5评测,客服数字人克隆 老板IP数字人克隆定制,全场景落地服务商行业口碑榜,专业选择指南。
  • P14225 [ICPC 2024 Kunming I] 左移 2 个人题解
  • 【URP】Unity[相机]渲染顺序
  • PySpark - OneHotEncoder
  • .NET 10 中 C# 14 和 F# 10 的新情况
  • P10687 True Liars 个人题解
  • Kali资料
  • 题解:Luogu P14522 【MX-S11-T3】空之碎物
  • 10分钟,无需公网 IP!零门槛搭建 NapCatQQ 趣味 AI 人机,聊天互动超简单
  • 1088. Rational Arithmetic (20)
  • 1087. All Roads Lead to Rome (30)
  • 1091. Acute Stroke (30)
  • 解码UDP
  • 1090. Highest Price in Supply Chain (25)
  • 人工智能之数据分析 numpy:第六章 数组基本操作
  • 2025中山办公场地租赁优选:中山西区金嘉创新港,一站式创业空间,赋能企业成长新机遇
  • 国产数据库替代MongoDB:政务电子证照新选择 - 教程
  • 读书笔记《投资的未来》,估算收益率
  • 使用代码查询快递信息的方法(与查询天气的方式雷同)
  • 1101. Quick Sort (25)
  • 1100. Mars Numbers (20)
  • 1083. List Grades (25)
  • 解码网络编程基础