博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
匈牙利算法-二分图最大匹配问题
阅读量:6348 次
发布时间:2019-06-22

本文共 926 字,大约阅读时间需要 3 分钟。

https://www.luogu.org/problemnew/show/P3386

#include
int e[1005][1005],match[1005],book[1005]; // match数组用来记录配对关系 int n,m,t;int dfs(int u){ for(int v=1; v<=m; v++) { if(book[v]==0&&e[u][v]==1) { book[v]=1; // 标记v点已经被访问 if(match[v]==0||dfs(match[v])) // 如果点v未被配对,或者点v的匹配对象找到了新的配对。 { match[v]=u; // 更新配对关系 return 1; } } } return 0;}int main(){ int a,b; int sum=0; scanf("%d%d%d", &n, &m, &t); while(t--) { scanf("%d%d", &a, &b); if(a>n||b>m) continue; e[a][b]=1; } for(int i=1; i<=n; i++) // 判断每一个左边的点能不能与右边的点形成一个新的增广路(一条路径的起点、终点都是未被配对的点), { for(int j=1; j<=n; j++) book[j]=0; // 清空上次搜索时的标记 if(dfs(i)) sum++;// 可以的话匹配数+1。 } printf("%d", sum);}

 

转载于:https://www.cnblogs.com/dongdong25800/p/10522305.html

你可能感兴趣的文章
Python「八宗罪」
查看>>
你的隐私还安全吗?社交网络中浏览历史的去匿名化
查看>>
NeurIPS 2018|如何用循环关系网络解决数独类关系推理任务?
查看>>
Windows 10 份额突破 40%,Windows 7 连跌四月终回升
查看>>
怎么把Maven项目转为动态Web项目?
查看>>
Arm发布Cortex-A76AE自动驾驶芯片架构,宣示车载系统市场主权
查看>>
FreeBSD ports中make可带有的参数(转)
查看>>
Hibernate入门教程
查看>>
Java支付宝扫码支付[新]
查看>>
SpringMVC 拦截器 筛选
查看>>
CronExpression介绍
查看>>
第十八章:MVVM(八)
查看>>
点击表头切换升降序排序方式
查看>>
第26天,Django之include本质
查看>>
Java中静态变量和实例变量的区别
查看>>
秋名山老司机(详解)——bugku
查看>>
RED | Robot Framework集成开发环境
查看>>
育碧同 Mozilla 联手开发 AI 代码助手
查看>>
【实用】面对枯燥的源码,如何才能看得下去?
查看>>
智库说 | 徐远:数字时代的城市潜力
查看>>