hdu2255 (二分图最优匹配)
来源:互联网 发布:nginx安装ssl模块 编辑:程序博客网 时间:2024/05/21 16:58
Kuhn Munkras算法
纯模板题。具体实现还不太懂,先贴模板。有空再研究。
很好的参考资料:http://www.cnblogs.com/skyming/archive/2012/02/18/2356919.html
#include <iostream>#include <stdio.h>#include <string.h>#include <map>#include <math.h>#include <algorithm>using namespace std;#define N 310int mp[N][N];bool visx[N],visy[N];int lx[N],ly[N];int match[N];int n;bool Hungary(int u){//匈牙利算法 visx[u]=1; for(int i=0;i<n;i++){ if(!visy[i] && lx[u]+ly[i]==mp[u][i]){ visy[i]=1; if(match[i] == -1||Hungary(match[i])){ match[i]=u; return true; }//if }//if }//for return false;}void KM_perfect_match(){ int temp; memset(lx,0,sizeof(lx)); memset(ly,0,sizeof(ly)); for(int i=0;i<n;i++)//lx[i]为权值最大的边 for(int j=0;j<n;j++) lx[i]=max(mp[i][j],lx[i]); for(int i=0;i<n;i++){//对n个点匹配 while(1){ memset(visx,0,sizeof(visx)); memset(visy,0,sizeof(visy)); if(Hungary(i)) break;//匹配成功 else{//匹配失败,找最小值 temp = INT_MAX; for(int j=0;j<n;j++) if(visx[j])//x在交错树中 for(int k=0;k<n;k++) if(!visy[k]&&temp>lx[j]+ly[k]-mp[j][k]) temp=lx[j]+ly[k]-mp[j][k]; for(int j=0;j<n;j++){//更新定标 if(visx[j]) lx[j]-=temp; if(visy[j]) ly[j]+=temp; } }//else }//while }}int main(){ int ans; while(scanf("%d",&n)!=EOF){ ans=0; memset(match,-1,sizeof(match)); for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d",&mp[i][j]); KM_perfect_match(); for(int i=0;i<n;i++) ans+=mp[match[i]][i]; printf("%d\n",ans); } return 0;}
0 0
- hdu2255 (二分图最优匹配)
- hdu2255 奔小康赚大钱,二分图最优匹配km模板
- hdu2255二分最优匹配KM标准模板
- hdu2255 二分图最佳匹配
- hdu2255——奔小康赚大钱(二分图最优匹配+KM算法)
- hdu2255二分图最大权匹配
- HDU2255(带权二分图的最大匹配)
- 奔小康赚大钱(hdu2255,二分图最大权匹配)
- hdu2255 二分图的最佳匹配 KM算法
- HDU2255 奔小康赚大钱【二分图最佳匹配】
- HDU2255奔小康赚大钱 二分图最佳匹配KM
- hdu2255--奔小康赚大钱 (二分图最大权匹配)
- 二分图最优完美匹配
- 二分图最优匹配 模板
- HDU2255二分匹配最大权值
- poj 2594(二分图最优匹配)
- HDU-2853 Assignment【二分图最优匹配】
- hdu 2255 二分图—最优匹配
- 怎么才能提高效率
- Rescue HDU杭电1242【广搜+优先队列】
- aapt命令获取apk详细信息(包名、版本号、版本名称、兼容api级别、启动Activity等)
- 最好的安卓数据库ORM框架greenDao使用详解(一)
- 随笔注意点
- hdu2255 (二分图最优匹配)
- iOS - 判断当前系统版本号
- 使用html5获取当前手机的经纬度,并接入百度地图API,查询出当前位置
- HDU 5363 Key Set
- java和javac编译运行java程序
- 冒泡排序 选择排序 快速排序(C语言)
- dark
- hdu 5360 Hiking(2015 Multi-University Training Contest 6)
- error:“1”: 宏形参表中的意外