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

[GESP6级模拟题]森林统计

题目背景

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

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

题目描述

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

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

输入格式

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

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

接下来 n−1n-1 行,每行两个整数 u,vu, v,表示节点 uu 和 vv 之间有一条边。

输出格式

输出一行 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,5 → 22
  • 节点 22:子树 {2}\{2\} 中权值大于 11 的有 00
  • 节点 33:子树 {3,4,5}\{3,4,5\} 中权值大于 44 的有 55 → 11
  • 节点 44:子树 {4}\{4\} 中权值大于 55 的有 00
  • 节点 55:子树 {5}\{5\} 中权值大于 22 的有 00

数据范围

1≤n≤10001 \le n \le 1000,aia_i 是 1∼n1 \sim n 的一个排列。