#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),收集序列 1→3→41 \to 3 \to 4,长度为 33。

数据范围

对于 100%100\% 的数据,1≤n≤50001 \le n \le 5000,∣ai∣≤109|a_i| \le 10^9。

子任务 分值 测试点 附加约束
11 2020 001∼004001 \sim 004 n≤20n \le 20
22 005∼008005 \sim 008 树为一条链(每个节点至多有一个子节点),n≤5000n \le 5000
33 009∼012009 \sim 012 沿着任意向下路径,节点权值严格递增,n≤5000n \le 5000
44 4040 013∼020013 \sim 020 无特殊限制,n≤5000n \le 5000