#g6007. [GESP6级模拟题]森林统计

[GESP6级模拟题]森林统计

题目背景

护林员记录了一片森林中每棵树的"生长值"(1n1 \sim n 之间的整数,互不相同),树与树之间通过小路连接成一棵树形结构。

护林员想知道:对于每棵树,在它所在的小森林(即它的子树)中,有多少棵树的生长值比它大。

题目描述

给定一棵 nn 个节点的树,每个节点有一个互不相同的正整数权值 aia_i1ain1 \le a_i \le n,所有 aia_i 构成一个 1n1 \sim n 的排列)。

对于每个节点 ii,统计在其子树中(包括节点 ii 自身),权值大于 aia_i 的节点个数。

输入格式

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

第二行 nn 个正整数 a1,a2,,ana_1, a_2, \dots, a_n,表示每个节点的权值。

接下来 n1n-1 行,每行两个整数 u,vu, v,表示节点 uuvv 之间有一条边。

输出格式

输出一行 nn 个整数,第 ii 个整数表示节点 ii 的子树中权值比它大的节点个数。

样例输入

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

样例输出

2 0 1 0 0

样例解释

树的形态和各节点权值如下:

    1(3)
   / \
 2(1) 3(4)
     / \
   4(5) 5(2)
  • 节点 11:子树 {1,2,3,4,5}\{1,2,3,4,5\} 中权值大于 33 的有 4,54,522
  • 节点 22:子树 {2}\{2\} 中权值大于 11 的有 00
  • 节点 33:子树 {3,4,5}\{3,4,5\} 中权值大于 44 的有 5511
  • 节点 44:子树 {4}\{4\} 中权值大于 55 的有 00
  • 节点 55:子树 {5}\{5\} 中权值大于 22 的有 00

数据范围

1n10001 \le n \le 1000aia_i1n1 \sim n 的一个排列。