算法模板之KM(带权的二分匹配)
来源:互联网 发布:js for in return 编辑:程序博客网 时间:2024/05/22 02:14
KM模板(带权的二分匹配)
int vx[N],vy[N],lx[N],ly[N],link[N],mat[N][N];int n;int dfs(int t){ int i; vx[t]=1; for(i=1; i<=n; i++) { if(vy[i]==0&&lx[t]+ly[i]==mat[t][i]) { vy[i]=1; if(link[i]==-1||dfs(link[i])) { link[i]=t; return 1; } } } return 0;}int KM(){ int i,j,t,k; memset(lx,0,sizeof(lx)); memset(ly,0,sizeof(ly)); for(i=1; i<=n; i++) for(j=1; j<=n; j++) lx[i]=max(lx[i],mat[i][j]); for(i=1; i<=n; i++) { while(1) { memset(vx,0,sizeof(vx)); memset(vy,0,sizeof(vy)); if(dfs(i)) break; else { t=inf; for(j=1; j<=n; j++) if(vx[j]) for(k=1; k<=n; k++) if(vy[k]==0&&lx[j]+ly[k]-mat[j][k]<t) t=lx[j]+ly[k]-mat[j][k]; for(j=1; j<=n; j++) { if(vx[j]) lx[j]-=t; if(vy[j]) ly[j]+=t; } } } } int sum=0; for(int i=1; i<=n; i++) sum+=mat[link[i]][i]; return sum;}
阅读全文
0 0
- 算法模板之KM(带权的二分匹配)
- 带权二分图的最佳匹配(KM算法)
- 带权二分图最佳匹配KM算法模板
- KM(带权最大二分匹配) 模板
- KM算法--带权二分匹配
- 带权二分图匹配KM算法
- 带权的二分图的最优匹配KM算法
- 【模板】KM算法模板(带注释)——二分图带权最大匹配
- KM算法--带权二分图最佳匹配
- 带权二分匹配——KM算法
- KM算法模板(二分图的最大权匹配)
- KM算法二分图完美匹配 模板
- HDU 2255 奔小康赚大钱(二分图的最大带权匹配 裸的KM算法)
- 二分图最优匹配之KM算法
- hdoj 2255 奔小康赚大钱 (KM算法 详解+模板) && HDU 1533 Going Home (二分图最小权匹配 KM模板)纯模板
- 二分图的最大权匹配(最小权匹配)KM算法
- 二分图的最佳匹配(KM 算法)
- 二分图的最优匹配(KM算法)
- Qt编程公众号二维码
- 树状数组的三种模式
- poj 3026
- Xutils概述
- 放假两个月,我几乎没碰过代码,你也和我一样在面对迷茫吗?
- 算法模板之KM(带权的二分匹配)
- Error:Execution failed for task ':app:processDebugManifest'
- 寻C++程序员兼职创业
- K3脱离域环境不能正常使用的解决办法
- get,post,jsonp数据交互—百度下拉列表
- poj 2778 _DNA Sequence (AC自动机+矩阵快速幂)
- ETH-转载
- Shiro 简单介绍
- Ansj自定义词典