#P14824. [Bulgarian2015组队赛]matrix

[Bulgarian2015组队赛]matrix

题目描述

给定一个 N×NN \times N 的方阵,元素均为正整数:

$$\begin{matrix} c_{11},c_{12},\dots,c_{1N}\\ c_{21},c_{22},\dots,c_{2N}\\ \cdots\\ c_{N1},c_{N2},\dots,c_{NN} \end{matrix}$$

请编写程序 matrix,寻找两组非负整数序列:

m1,m2,,mNm_1,m_2,\dots,m_N

w1,w2,,wN,w_1,w_2,\dots,w_N,

使得对于每一对 (i,j)(i,j),都有

mi+wjcijm_i+w_j \ge c_{ij}

并且总和

i=1Nmi+i=1Nwi\sum_{i=1}^{N} m_i+\sum_{i=1}^{N} w_i

最小。

输入格式

从标准输入读入以下数据:

第一行输入一个整数 NN,表示矩阵大小。

接下来 NN 行给出矩阵的各行。第 ii 行包含 NN 个正整数,用空格分隔,表示矩阵第 ii 行的数字。

输出格式

第一行输出计算得到的最小总和:

i=1Nmi+i=1Nwi.\sum_{i=1}^{N} m_i+\sum_{i=1}^{N} w_i.

第二行输出 NN 个非负整数,用单个空格分隔,表示一种可行的序列

m1,m2,,mN.m_1,m_2,\dots,m_N.

第三行输出 NN 个非负整数,用单个空格分隔,表示一种可行的序列

w1,w2,,wN.w_1,w_2,\dots,w_N.

输出的两组序列必须满足:

  • 它们的总和等于第一行输出的最小总和;
  • 对所有 (i,j)(i,j) 都满足 mi+wjcijm_i+w_j \ge c_{ij}

数据范围

  • 1N2001 \le N \le 200
  • 1000cij1000001000 \le c_{ij} \le 100000
  • 内存限制:11 MB。

样例

输入

5
1000 2000 6000 3000 4000
2000 5000 6000 2000 2000
1500 2000 6000 2000 3500
4000 2000 6000 1000 3000
2500 4500 6000 2000 2000

输出

21500
500 0 0 0 0
4000 5000 6000 2500 3500