#agc023f. [agc023_f]01 on Tree

[agc023_f]01 on Tree

题目描述

Snuke 有一个带有 NN 个顶点的根树,顶点编号为 11NN。顶点 11 是树的根节点,顶点 ii2iN2 \leq i \leq N)的父节点是顶点 PiP_iPi<iP_i < i)。每个顶点上都写有数字 0011,顶点 ii 上写有数字 ViV_i

Snuke 想要将这棵树的顶点按水平方向排列。在这里,对于每个顶点,该顶点的所有祖先都不应出现在该顶点的右边。

排列完成后,设 XX 为按照排列从左到右读取顶点上的数字所得到的序列。Snuke 希望使 XX 的逆序数最小。求 XX 的最小可能逆序数。

注解

长度为 NN 的序列 ZZ 的_逆序数_是对于所有整数对 (i,j)(i, j)1i<jN1 \leq i < j \leq N),满足 Zi>ZjZ_i > Z_j 的个数。

约束条件

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Pi<i1 \leq P_i < i2iN2 \leq i \leq N
  • 0Vi10 \leq V_i \leq 11iN1 \leq i \leq N
  • 输入中的所有值都是整数。

输入格式

从标准输入读入数据,格式如下:

NN P2P_2 P3P_3 ...... PNP_N V1V_1 V2V_2 ...... VNV_N

输出格式

输出 XX 的最小可能逆序数。


示例输入 1

6
1 1 2 3 3
0 1 1 0 0 0

示例输出 1

4

当顶点按照 1,3,5,6,2,41, 3, 5, 6, 2, 4 的顺序排列时,XX 的序列为 (0,1,0,0,1,0)(0, 1, 0, 0, 1, 0),其逆序数为 44。不可能存在更少的逆序数,因此答案为 44


示例输入 2

1

0

示例输出 2

0

X=(0)X = (0),其逆序数为 00


示例输入 3

15
1 2 3 2 5 6 2 2 9 10 1 12 13 12
1 1 1 0 1 1 0 0 1 0 0 1 1 0 0

示例输出 3

31