poj2400===km
来源:互联网 发布:js滑动幻灯片轮播代码 编辑:程序博客网 时间:2024/06/03 16:20
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>const int maxn=21,inf=10000010;int n,lx[maxn],ly[maxn],w[maxn][maxn],d[maxn],t,ans,num,h[maxn];bool px[maxn],py[maxn];bool dfs1(int x){int i;px[x]=true;for(i=1;i<=n;i++){if(py[i]) continue;t=lx[x]+ly[i]-w[x][i];if(t==0){py[i]=true;if(d[i]==0 || dfs1(d[i])){d[i]=x;return true;}}}return false;}void dfs2(int x,int sum){int i;if(sum>ans) return;if(x>n){if(sum!=ans) return;printf("Best Pairing %d\n",++num);for(i=1;i<=n;i++)printf("Supervisor %d with Employee %d\n",i,h[i]);return;}for(i=1;i<=n;i++)if(!py[i]){h[x]=i;py[i]=true;dfs2(x+1,sum-w[x][i]);py[i]=false;}return;}int main(){int i,j,k,t1,u;scanf("%d",&t1);for(u=1;u<=t1;u++){scanf("%d",&n);for(i=1;i<=n;i++)for(j=1;j<=n;j++){scanf("%d",&k);w[k][i]=1-j;}for(i=1;i<=n;i++)for(j=1;j<=n;j++){scanf("%d",&k);w[i][k]+=1-j;}memset(ly,0,sizeof(ly));for(i=1;i<=n;i++){lx[i]=w[i][1];for(j=2;j<=n;j++)if(lx[i]<w[i][j])lx[i]=w[i][j];}memset(d,0,sizeof(d));for(i=1;i<=n;i++)while(1){memset(px,false,sizeof(px));memset(py,false,sizeof(py));if(dfs1(i)) break;t=inf;for(j=1;j<=n;j++)if(px[j])for(k=1;k<=n;k++)if(!py[k] && lx[j]+ly[k]-w[j][k]<t)t=lx[j]+ly[k]-w[j][k];for(j=1;j<=n;j++){if(px[j]) lx[j]-=t;if(py[j]) ly[j]+=t;}}ans=0;for(i=1;i<=n;i++)if(d[i]!=0) ans-=w[d[i]][i];printf("Data Set %d, Best average difference: %.6f\n",u,ans*0.5/n);num=0;memset(h,0,sizeof(h));memset(py,false,sizeof(py));dfs2(1,0);if(u<t1)puts("");}return 0;}
0 0
- poj2400===km
- POJ2400 KM最大匹配
- poj2400--Supervisor, Supervisee(KM算法)
- poj2400 KM算法二分图的完美匹配
- poj2400 - Supervisor, Supervisee
- km
- KM
- 【KM】
- KM
- KM
- POJ2400 Supervisor, Supervisee【网络流】
- poj2400 Supervisor, Supervisee 二分图匹配
- Km Kcat Kcat/Km
- KM algo
- KM搜索
- KM算法。。
- KM算法
- KM模板
- UITextView头文件学习
- POJ2400 KM最大匹配
- C语言程序设计技巧之字符串长度
- MT6580环境安装
- Java对象转json,json转Java对象
- poj2400===km
- apk 反编译备忘
- sql server tempdb 空间释放
- Android手机调整/data分区和/sdcard分区
- JS公共方法:全部反选,获取url指定的参数,取值保留两位小数...
- Linux服务软链接
- 关于烂代码的那些事(下)
- jsf 表单验证
- HDOJ 1042 N!(大数阶乘JAVA)