带权的完备二分匹配问题
来源:互联网 发布:淘宝苹果数据线 编辑:程序博客网 时间:2024/06/06 13:07
啦啦啦啦,学算法了。
自己其实还是有些不懂的,但先记下来为敬好吧,没毛病;
模板 http://blog.csdn.net/ZYY173533832/article/details/11519291?locationNum=7&fps=1
思想 http://blog.csdn.net/u013044116/article/details/45228057?locationNum=4&fps=1
上个自己版本的高仿hdu2255,裸模板;
#include <iostream>#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;const int maxn=310;int map[310][310];int n,slack[310];int lx[310],ly[310],link[310];bool visx[310],visy[310];const int inf=999999;bool dfs(int x){ visx[x]=true; for(int y=1;y<=n;y++) { if(visy[y]) continue; int t=lx[x]+ly[y]-map[x][y]; if(t==0) { visy[y]=true; if(link[y]==-1||dfs(link[y])) { link[y]=x; return true; } } else if(slack[y]>t) { slack[y]=t; } } return false;}int km(){ memset(link,-1,sizeof(link)); memset(lx,0,sizeof(lx)); memset(ly,0,sizeof(ly)); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(lx[i]<map[i][j]) lx[i]=map[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) slack[j]=inf; while(1) { memset(visx,false,sizeof(visx)); memset(visy,false,sizeof(visy)); if(dfs(i)) break; int d=inf; for(int j=1;j<=n;j++) { if(!visy[j]&&d>slack[j]) { d=slack[j]; } } for(int j=1;j<=n;j++) { if(visx[j]) lx[j]-=d; } for(int j=1;j<=n;j++) { if(visy[j]) ly[j]+=d; else slack[j]-=d; } } } int ans=0; for(int i = 1; i <= n ; i ++) ans += map[link[i]][i]; return ans;}int main(){ while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { scanf("%d",&map[i][j]); } } printf("%d\n",km()); } return 0;}
0 0
- 带权的完备二分匹配问题
- hdu 2255 二分图的完备匹配
- poj1469 二分图的完备匹配
- 带权的二分匹配
- hdu 1533 二分图的完备匹配(KM算法)
- POJ 3565 Ants(二分图最小权完备匹配)
- 二分图的最大带权匹配
- 二分图的最大带权匹配
- poj 2195 带权重的二分图最大匹配问题
- 信与信封 (二分图完备匹配)
- KM算法求带权二分图的最大匹配(完备匹配)
- KM算法(二分图完备匹配下的最大权匹配)
- hdu 3488 Tour(二分匹配 最小权完备匹配 km算法)
- 二分图的带权匹配和二分图的最优匹配
- HDU2255 奔小康赚大钱(二分图的最大完备匹配,KM算法)
- 带权的二分图的最优匹配KM算法
- 完备匹配下的最大权匹配
- 带权二分图的最优匹配 Kuhn-Munkres算法
- SNAP-The SENTINEL-1 Toolbox
- Let the Balloon Rise
- 70. Climbing Stairs
- idTCPSever得到连接IP和端口。
- iOS开发之App主题切换完整解决方案(Swift版)
- 带权的完备二分匹配问题
- Linux下文件操作
- 大数据工程师面试题(六)
- 0002 真的吗,700元的电脑可以学会编程?
- git的操作命令
- Hibernate (一) 入门
- log4j,ConversionPattern的英文全拼说明
- 461. Hamming Distance
- 2017.2.25被虐记录