http://poj.org/problem?id=2400

KM算法http://philoscience.iteye.com/blog/1754498

题意:每个雇主对雇员有个满意度 雇员对雇主有个满意度 求最匹配的雇员与雇主

最小权匹配 这个给出的数据矩阵貌似是反着的 建图的时候反一下就好了

 #include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stdlib.h>
#define N 110
#define INF 0x3f3f3f
using namespace std;
int w[N][N],n,x[N],y[N],lx[N],ly[N],link[N],sum,o[N],vis[N],num;
bool match(int u)
{
x[u] = ;
for(int i = ; i <= n ; i++)
if(lx[u]+ly[i]==w[u][i]&&!y[i])
{
y[i] = ;
if(!link[i]||match(link[i]))
{
link[i] = u;
return true;
}
}
return false;
}
double km()
{
int i,j,g;
for(i = ; i <= n ; i++)
link[i] = lx[i] = ly[i]=;
for(i = ; i <= n ; i++)
{
for(;;)
{
for(j = ;j <= n ; j++)
x[j] = y[j] = ;
if(match(i)) break;
int d = INF;
for(j = ; j <= n ; j++)
{
if(x[j])
for(g = ; g <= n ; g++)
if(!y[g])
d = min(d,lx[j]+ly[g]-w[j][g]);
}
for(j = ; j <= n ; j++)
{
if(x[j]) lx[j]-=d;
if(y[j]) ly[j]+=d;
}
}
}
sum=;
for(i = ; i <= n ; i++)
sum-=(lx[i]+ly[i]);
return 1.0*sum/(*n);
}
void dfs(int u,int ss)
{
int i;
if(ss>sum) return ;
if(u==n+)
{
printf("Best Pairing %d\n",++num);
for(i = ;i <= n ; i++)
printf("Supervisor %d with Employee %d\n",i,o[i]);
return ;
}
for(i = ; i <= n ; i++)
{
if(!vis[i])
{
vis[i] = ;
o[u] = i;
dfs(u+,ss-w[u][i]);
vis[i] = ;
}
}
}
int main()
{
int i,j,kk=,cas,a;
scanf("%d",&cas);
while(cas--)
{
kk++;num=;
scanf("%d",&n);
memset(w,,sizeof(w));
memset(vis,,sizeof(vis));
for(i = ; i <= n ; i++)
for(j = ; j <= n ; j++)
{
scanf("%d",&a);
w[a][i] -= j;
}
for(i = ; i <= n ; i++)
for(j = ; j <= n ; j++)
{
scanf("%d",&a);
w[i][a]-=j;
}
double s = km();
printf("Data Set %d, Best average difference: %.6f\n",kk,s-);
dfs(,);
puts("");
}
return ;
}

poj2400Supervisor, Supervisee(KM)的更多相关文章

  1. poj图论解题报告索引

    最短路径: poj1125 - Stockbroker Grapevine(多源最短路径,floyd) poj1502 - MPI Maelstrom(单源最短路径,dijkstra,bellman- ...

  2. 【POJ 2400】 Supervisor, Supervisee(KM求最小权匹配)

    [POJ 2400] Supervisor, Supervisee(KM求最小权匹配) Supervisor, Supervisee Time Limit: 1000MS   Memory Limit ...

  3. POJ 2400 Supervisor, Supervisee(KM)

    題目鏈接 題意 :N个部门和N个员工,每个部门要雇佣一个工人,部门对每个工人打分,从1~N,1表示很想要,N表示特别不想要,每个工人对部门打分,从1~N.1表示很想去这个部门,N表示特别不想去这个部门 ...

  4. POJ 2400 Supervisor, Supervisee(KM二分图最大权值匹配)题解

    题意:n个老板n个员工,先给你n*n的数据,i行j列代表第i个老板第j喜欢的员工是谁,再给你n*n的数据,i行j列代表第i个员工第j喜欢的老板是谁,如果匹配到第k喜欢的人就会产生一个分数k-1.现在让 ...

  5. 【转】KM匹配题集

    转自:http://blog.csdn.net/shahdza/article/details/7779324 [HDU]2255 奔小康赚大钱 模板题★1533 Going Home 模板题★242 ...

  6. 匈牙利算法与KM算法

    匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...

  7. 【HDU2255】奔小康赚大钱-KM算法

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...

  8. HDU2255-奔小康赚大钱-二分图最大权值匹配-KM算法

    二分图最大权值匹配问题.用KM算法. 最小权值的时候把权值设置成相反数 /*-------------------------------------------------------------- ...

  9. KM模板

    var n,m,i,j:longint; ans:int64; sel,lx,ly,slack:..] of int64; a:..,..] of int64; visx,visy:..] of bo ...

随机推荐

  1. 关于html的下载功能

    新项目基本告一段落,第一次完成前后端分离的集成,遇到的坑自然不少. 来说说第一天遇到的其中一个坑吧. ——关于下载的问题... 以前的做法,大家都喜爱用<a></a>标签吧.而 ...

  2. CentOS平台下为Python添加MongoDB支持PyMongo

    下载PyMongo [root@leezhen ~]# wget https://pypi.python.org/packages/source/p/pymongo/pymongo-2.6.3.tar ...

  3. android studio笔记之编译运行错误

    错误类型: Error:java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major错 ...

  4. Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析

    Spark Streaming揭秘 Day30 集群模式下SparkStreaming日志分析 今天通过集群运行模式观察.研究和透彻的刨析SparkStreaming的日志和web监控台. Day28 ...

  5. linux内核中sys_poll()的简化分析

    app:poll or select; kernel: sys_poll(); do_sys_poll(struct pollfd __user *ufds, unsigned int nfds,st ...

  6. ThinkPHP I方法

    ThinkPHP的I方法是3.1.3版本新增的,如果你是之前的3.*版本的话,可以直接参考使用3.1快速入门教程系列的变量部分. 概述 正如你所见到的一样,I方法是ThinkPHP众多单字母函数中的新 ...

  7. sp_depends 查询在sybase中依赖的函数

    sp_depends 查询在sybase中依赖的函数. sp_depends tblEK7_policy_exclude sp_depends tblEK7_agent_exclude

  8. SPFA&邻接表 PASCAL

    题目来自CODE[VS]-->热浪 1557 热浪 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石       题目描述 Description 德克萨斯纯朴的民眾们这个 ...

  9. HTML网页中添加音频视频动画...(转)

    在网页中适当嵌入音频和视频能够充分显示网页的多媒体特性,特别是随着宽带网的普及,使得网络广播和网络视频成为现实,网页音频和视频的重要性也日益突显.具体来说,网页音频和视频的嵌入方法主要有三种: 一.b ...

  10. hdu 4710 Balls Rearrangement()

    http://acm.hdu.edu.cn/showproblem.php?pid=4710 [code]: #include <iostream> #include <cstdio ...