CF1666J.Job Lookup

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Julia 的 nn 个朋友想在他们刚搬到的新国家创办一家初创公司。他们根据各自的工作内容,从最前端的任务到最后端的任务,给彼此分配了 11 到 nn 的编号。他们还估算了一个矩阵 cc,其中 cij=cjic_{ij} = c_{ji} 表示从事工作 ii 和 jj 的人每月之间的平均消息数。

现在他们想要建立一个层级树。这个树是一个二叉树,每个节点包含团队中的一名成员。某个成员会被选为团队的领导,作为根节点。为了让领导能够方便地联系任何下属,对于树中的每个节点 vv,必须满足:其左子树中的所有成员编号都小于 vv,右子树中的所有成员编号都大于 vv。

层级树确定后,从事工作 ii 和 jj 的人将通过树中连接他们节点的最短路径进行交流。我们用 dijd_{ij} 表示这条路径的长度。因此,他们的通信代价为 cij⋅dijc_{ij} \cdot d_{ij}。

你的任务是构建一个层级树,使得所有成员对之间的通信总成本 ∑1≤i<j≤ncij⋅dij\sum_{1 \le i < j \le n} c_{ij} \cdot d_{ij} 最小。

输入格式

第一行包含一个整数 nn(1≤n≤2001 \le n \le 200),表示组织初创公司的团队成员数。

接下来的 nn 行,每行包含 nn 个整数,第 ii 行第 jj 个数为 cijc_{ij},表示成员 ii 和成员 jj 之间每月的消息数估计值(0≤cij≤1090 \le c_{ij} \le 10^9;cij=cjic_{ij} = c_{ji};cii=0c_{ii} = 0)。

输出格式

输出一个能使通信总成本最小的层级树的描述。对于每个编号从 11 到 nn 的成员,输出其父节点的成员编号,如果该成员是领导,则输出 00。如果有多个最优解,输出任意一个即可。

输入输出样例

  • 输入#1

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

    输出#1

    2 4 2 0

说明/提示

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

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页