题目 30244

有根树拓扑序最小逆序对

查看题解 ↗GitHub ↗如何评测
题号
30244
时间限制
10000 ms
内存限制
1024 MB
标签
树图论
来源
Library Checker (yosupo06) - rooted_tree_topological_order_with_minimum_inversions

【题目描述】

给定:

  • 一棵有 NN 个顶点的有根树,
  • NN 个整数 c0,c1,…,cN−1c_0, c_1, \dots, c_{N-1},以及
  • NN 个整数 d0,d1,…,dN−1d_0, d_1, \dots, d_{N-1}。

树的根是顶点 00,顶点 ii 的父亲是 pip_i。

求一个 (0,1,…,N−1)(0,1,\dots,N-1) 的排列 pp,满足以下条件。若有多组合法的答案,你可以任选一组。

  • 若 i≠ji\neq j 且顶点 pip_i 是顶点 pjp_j 的祖先,则必须满足 i<ji \lt j。
  • 在满足上述条件的所有方案中,值 X=∑i=0N−1∑j=0i−1cpidpjX=\sum_{i=0}^{N-1}\sum_{j=0}^{i-1} c_{p_i} d_{p_j} 最小。

输出 XX 的最小值,以及一组使 XX 取到该最小值的排列 pp。

【输入】

文本
$N$
$p_1$ $p_2$ ... $p_{N-1}$
$c_0$ $c_1$ ... $c_{N-1}$
$d_0$ $d_1$ ... $d_{N-1}$

【输出】

文本
$X$
$p_0$ $p_1$ $\ldots$ $p_{N-1}$

【输入样例】

文本
10
0 0 0 1 2 2 4 7 8
41 10 46 7 30 4 30 12 48 32
47 38 25 31 37 48 16 17 34 13

【输出样例】

文本
29047
0 2 6 1 4 7 8 9 3 5

【输入样例2】

文本
5
0 0 1 2
1 100000000 1 1 100000000
1 1 100000000 100000000 1

【输出样例2】

文本
10000000400000005
0 1 2 4 3

【数据范围】

  • 1≤N≤2000001 \leq N \leq 200000
  • 0≤pi<i0 \leq p_i \lt i
  • 0≤ci≤10000000000 \leq c_i \leq 1000000000
  • 0≤di≤10000000000 \leq d_i \leq 1000000000
  • ∑i=0N−1ci≤1000000000\sum_{i=0}^{N-1} c_i \leq 1000000000
  • ∑i=0N−1di≤1000000000\sum_{i=0}^{N-1} d_i \leq 1000000000

【来源】

Library Checker(yosupo06) rooted_tree_topological_order_with_minimum_inversions

本题为 special judge(输出任意合法解),暂不可本地评测。

数据下载

题目 30244 的公开数据

正在读取文件列表…

常用命令

题目 30244 的 ROJ 命令

以下命令默认使用全局安装的 ROJ Skill,请在终端中直接执行;如果修改过 AGENT_HOME,请将命令中的 ~/.agents 替换为对应目录。