#P12823. [NERC 2021] Job Lookup

    ID: 12647 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2021Special Judge区间 DPICPCNERC/NEERC

[NERC 2021] Job Lookup

Description

Julia 的 nn 个朋友想要在他们新搬去的国家创办一家初创公司。他们根据各自的工作内容(从前端到后端)给自己分配了编号 11nn。他们还估计了一个矩阵 cc,其中 cij=cjic_{ij} = c_{ji} 表示从事工作 iijj 的人之间每月的平均消息数量。

现在他们想要建立一棵层级树。这棵树将是一棵二叉树,每个节点包含团队中的一名成员。某位成员将被选为团队领导,并位于根节点。为了确保领导能够轻松联系到任何下属,对于树中的每个节点 vv,必须满足以下条件:其左子树中的所有成员编号必须小于 vv,而其右子树中的所有成员编号必须大于 vv

当层级树确定后,从事工作 iijj 的成员将通过他们在树中节点之间的最短路径进行通信。设该路径长度为 dijd_{ij},则他们的通信成本为 cijdijc_{ij} \cdot d_{ij}

你的任务是找到一棵层级树,使得所有成员对的通信总成本最小化:1i<jncijdij\sum_{1 \le i < j \le n} c_{ij} \cdot d_{ij}

Input Format

第一行包含一个整数 nn1n2001 \le n \le 200)—— 组织初创公司的团队成员数量。

接下来的 nn 行,每行包含 nn 个整数,第 ii 行的第 jj 个数是 cijc_{ij} —— 团队成员 iijj 之间每月的估计消息数量(0cij1090 \le c_{ij} \le 10^9cij=cjic_{ij} = c_{ji}cii=0c_{ii} = 0)。

Output Format

输出描述一棵最小化通信总成本的层级树。为此,对于编号从 11nn 的每个团队成员,输出其父节点的成员编号,如果是领导(根节点)则输出 00。如果存在多棵最优树,输出其中任意一棵的描述即可。

4
0 566 1 0
566 0 239 30
1 239 0 1
0 30 1 0
2 4 2 0

Hint

最小的可能总成本为 $566 \cdot 1 + 239 \cdot 1 + 30 \cdot 1 + 1 \cdot 2 + 1 \cdot 2 = 839$:

翻译由 DeepSeek V3 完成