#3507. [GESP六级模拟]魔法水晶树

[GESP六级模拟]魔法水晶树

题目描述

在神秘的魔法森林深处,生长着一棵由 nn 个水晶节点组成的二叉树。第 ii 个节点上镶嵌着一颗魔法水晶,其能量值为 aia_i保证节点 11 是这棵树的根。

一位探险家计划从某个节点出发,沿着向下的树枝(即从父节点走向子节点)不断前进,并在任意时刻停下。行进途中,他可以收集途经节点上的水晶,但要求收集的水晶能量值严格递增(后收集的能量必须严格大于前一个)。他不必收集路径上的每一颗水晶,允许跳过某些节点。

请问,探险家最多能收集多少颗水晶?

输入格式

第一行一个正整数 nn,表示节点个数。

第二行 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,表示每个节点的魔法能量值。

接下来 nn 行,第 ii 行两个整数 li,ril_i, r_i

  • li=1l_i = -1,表示第 ii 个节点没有左子节点;否则左子节点编号为 lil_i
  • ri=1r_i = -1,表示第 ii 个节点没有右子节点;否则右子节点编号为 rir_i

保证节点 11 是根节点,且输入构成一棵合法的二叉树。

输出格式

输出一行一个整数,表示最多能收集的水晶数量。

样例 #1

5
1 3 2 4 5
2 3
4 5
-1 -1
-1 -1
-1 -1
3

样例解释 #1

树的结构如下:

        1(1)
       /    \
    2(3)    3(2)
    /   \
 4(4)  5(5)

括号内为能量值。最优方案之一:从节点 11(能量 11)出发,经过节点 22(能量 33),到达节点 44(能量 44),收集序列 1341 \to 3 \to 4,长度为 33

数据范围

对于 100%100\% 的数据,1n50001 \le n \le 5000ai109|a_i| \le 10^9

子任务 分值 测试点 附加约束
11 2020 001004001 \sim 004 n20n \le 20
22 005008005 \sim 008 树为一条链(每个节点至多有一个子节点),n5000n \le 5000
33 009012009 \sim 012 沿着任意向下路径,节点权值严格递增,n5000n \le 5000
44 4040 013020013 \sim 020 无特殊限制,n5000n \le 5000