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

题目分析:直接用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;
}

  

UVA-11383 Golden Tiger Claw (KM算法)的更多相关文章

  1. UVA 11383 - Golden Tiger Claw(二分图完美匹配扩展)

    UVA 11383 - Golden Tiger Claw 题目链接 题意:给定每列和每行的和,给定一个矩阵,要求每一个格子(x, y)的值小于row(i) + col(j),求一种方案,而且全部行列 ...

  2. UVA 11383 Golden Tiger Claw 金虎爪(KM算法)

    题意: 给一个n*n的矩阵,每个格子中有正整数w[i][j],试为每行和每列分别确定一个数字row[i]和col[i],使得任意格子w[i][j]<=row[i]+col[j]恒成立.先输row ...

  3. 【KM算法】UVA 11383 Golden Tiger Claw

    题目大意 给你一个\(n×n\)的矩阵G,每个位置有一个权,求两个一维数组\(row\)和\(col\),使\(row[i] + col[j]\ge G[i][j]\),并且\(∑row+∑col\) ...

  4. UVA11383 Golden Tiger Claw —— KM算法

    题目链接:https://vjudge.net/problem/UVA-11383 题解: 根据KM()算法,标杆满足:l(x) + l(y) >= w(x, y) . 当求完最大权匹配之后,所 ...

  5. UVA 11383 Golden Tiger Claw 题解

    题目 --> 题解 其实就是一个KM的板子 KM算法在进行中, 需要满足两个点的顶标值之和大于等于两点之间的边权, 所以进行一次KM即可. KM之后, 顶标之和就是最小的.因为如果不是最小的,就 ...

  6. UVA11383 Golden Tiger Claw KM算法

    题目链接:传送门 分析 这道题乍看上去没有思路,但是我们仔细一想就会发现这道题其实是一个二分图最大匹配的板子 我们可以把这道题想象成将男生和女生之间两两配对,使他们的好感度最大 我们把矩阵中的元素\( ...

  7. Uva - 11383 - Golden Tiger Claw

    题意:一个N*N的矩阵,第i行第j列的元素大小为w[i][j],每行求一个数row[i],每列求一个数col[j],使得row[i] + col[j] >= w[i][j],且所有的row[]与 ...

  8. UVA 11383 Golden Tiger Claw(最佳二分图完美匹配)

    题意:在一个N*N的方格中,各有一个整数w(i,j),现在要求给每行构造row(i),给每列构造col(j),使得任意w(i,j)<=row(i)+col(j),输出row(i)与col(j)之 ...

  9. 【UVA 11383】 Golden Tiger Claw (KM算法副产物)

    Omi, Raymondo, Clay and Kimiko are on new adventure- in search of new Shen Gong Wu. But EvilBoy Geni ...

  10. uva11383 Golden Tiger Claw 深入理解km算法

    /** 题目: uva11383 Golden Tiger Claw 深入理解km算法 链接:https://vjudge.net/problem/UVA-11383 题意:lv 思路:lrj训练指南 ...

随机推荐

  1. CH1301 邻值查找【set应用】

    1301 邻值查找 0x10「基本数据结构」例题 描述 给定一个长度为 n 的序列 A,A 中的数各不相同.对于 A 中的每一个数 A_i,求:min(1≤j<i) ⁡|A_i-A_j|以及令上 ...

  2. ubuntu16.04下用笔记本摄像头和ROS编译运行ORB_SLAM2的单目AR例程

    要编译ORB_SLAM2的ROS例程首先需要安装ROS,以及在ROS下安装usb_cam驱动并调用,最后搭建ORB_SLAM2. 1.ROS的安装 我的电脑安装的是ubuntu16.04系统,所以我安 ...

  3. 二.re库介绍

    一.re库的主要功能函数 1.re.search()用法 2.re.match()的用法 >>> match=re.match(r'[1-9]\d{5}','BIT 100081') ...

  4. android的selector选择器

    1. drawable/actionbar_compat_item.xml 2.drawable/actionbar_compat_item_pressed.xml 3.drawable/action ...

  5. Myeclipse 2013 professional 破解

    破解前要先关闭Myeclipse2013 1.(1)输入usercode可以随便输入,(2)然后选择Myeclipse的版本,(3)点击systemid按钮 2.然后点击Tools菜单栏下的Rebui ...

  6. Mysql5.6主从复制

    搭建(192.168.1.10 -> 192.168.1.20) 1 master 上执行 阻塞 DMLflush tables with read lock; 记录 File 和 Positi ...

  7. js-jquery-SweetAlert2【三】INPUT TYPES

    1.text swal({ title: 'Input something', input: 'text', showCancelButton: true, inputValidator: funct ...

  8. ABP常见问题

    System.Data.SqlClient.SqlException (0x80131904): 'OFFSET' 附近有语法错误 解决方案:最新的ABP默认支持的是sql2012以上的版本,对于之前 ...

  9. 常用DOS命令总结

    本文主要参考:http://www.jb51.net/article/12360.htm http://blog.csdn.net/kofterry/article/details/5183110 常 ...

  10. 20145106 java实验一

    因为之前就使用过eclipse所以本次试验开始阶段并没有遇到什么大问题,按照步骤做下来. 我的实验序号根据算法是第二个四则运算的实验. 加法: package ljp; public class he ...