题目大意:一张可行二分图的权值以邻接矩阵的形式给了出来,现在要找每一个节点的可行顶标,使顶标和最小。

题目分析:直接用KM算法,结束后顶标之和最小。。。模板题。

代码如下:

# include<iostream>
# include<cstdio>
# include<queue>
# include<cmath>
# include<vector>
# include<cstring>
# include<algorithm>
using namespace std;
# define LL long long
# define REP(i,s,n) for(int i=s;i<n;++i)
# define CL(a,b) memset(a,b,sizeof(a))
# define CLL(a,b,n) fill(a,a+n,b) const int N=505;
const int INF=1<<30;
int w[N][N],lx[N],ly[N],n;
int link[N],visx[N],visy[N],slack[N]; bool match(int x)
{
visx[x]=1;
REP(y,1,n+1){
if(visy[y]) continue;
int t=lx[x]+ly[y]-w[x][y];
if(t==0){
visy[y]=1;
if(link[y]==-1||match(link[y])){
link[y]=x;
return true;
}
}else if(slack[y]>t)
slack[y]=t;
}
return false;
} void update()
{
int d=INF;
REP(i,1,n+1) if(!visy[i])
d=min(d,slack[i]);
REP(i,1,n+1) if(visx[i]) lx[i]-=d;
REP(i,1,n+1){
if(visy[i]) ly[i]+=d;
else slack[i]-=d;
}
} void KM()
{
CL(link,-1);
CL(ly,0);
REP(i,1,n+1){
lx[i]=-1;
REP(j,1,n+1)
lx[i]=max(lx[i],w[i][j]);
}
REP(x,1,n+1){
CLL(slack,INF,n+1);
while(1){
CL(visx,0);
CL(visy,0);
if(match(x)) break;
update();
}
}
} int main()
{
int T=15;
while(T--)
{
scanf("%d",&n);
REP(i,1,n+1) REP(j,1,n+1) scanf("%d",&w[i][j]);
KM();
REP(i,1,n+1) printf("%d%c",lx[i],(i==n)?'\n':' ');
REP(i,1,n+1) printf("%d%c",ly[i],(i==n)?'\n':' ');
int sum=0;
REP(i,1,n+1) sum+=lx[i]+ly[i];
printf("%d\n",sum);
}
return 0;
}

  

最新文章

  1. XMLHttpRequest.status状态码
  2. css写带边框的三角形
  3. 浅谈Dynamic 关键字系列之一:dynamic 就是Object(转)
  4. C string 函数大全
  5. iOS开发中使用Bmob RESTful API
  6. 使用socket实现FTP程序
  7. 分享一个牛逼的PHP无限极分类生成树方法,巧用引用(转)
  8. JS之路——日期函数
  9. C#读取word模版并对指定域写入数据保存为新word
  10. 字符串时间日期转为Date格式和long格式
  11. 通过Qt样式表定制程序外观(比较通俗易懂)
  12. [Cocos2d-x]布局与定位
  13. Kafka 协议实现中的内存优化
  14. iOS学习之Runtime(一)
  15. __proto__ 与 prototype
  16. mariadb集群与nginx负载均衡配置--centos7版本
  17. Python3列表(list)比较操作教程
  18. docker1
  19. OkHttp之Interceptor
  20. MySQL CPU 使用率高的原因和解决方法

热门文章

  1. Python+ Calibre 处理 中文报纸
  2. uchome 常用函数示例
  3. android 获取经纬度
  4. Flask系列之源码分析(一)
  5. HDU1757:A Simple Math Problem(矩阵快速幂)
  6. HttpClient发送get,post接口请求
  7. 7.2 Models -- Defining Models
  8. hdu5102 枚举每条边的长度
  9. flask后端 获取不到form表单post 的文件
  10. MapReduce: map读取文件的过程