[Opoi 2024] 二十六点

题目背景

二十六点: > 。 。 。 。 。 。 。 。 。 。 。 。 。 > > 。 。 。 。 。 。 。 。 。 。 。 。 。 凑二十六点真好玩,而为了凑四道题,就有了这道权值只有 $26$ 种的凑数题。

题目描述

给你一棵有 $n$ 个结点的以 $1$ 为根的树 $T$,第 $i$ 个结点有一个颜色 $c_i$,${\tt a} \le c_i \le {\tt z}$,和一个值 $P_i$。 对于每一个点 $x$,**从它到它子树中每一个点**(注意顺序是从它本身到子树中的点)都有一条路径,一共有子树的大小条路径。 现在忽略掉这些路径中的第 $2$ 到第 $P_x$ 个的点,特别地,若 $P_x = 1$ 则不忽略任何点。将忽略后的路径当作一个序列,序列中每个点的权值为路径上点的 $c_i$,求**每一个点的所有序列最长不下降子序列长度的最大值**。 注: 若有路径 $j$ 上的节点数 $len_j < P_x$,则相当于忽略这条路径上除第一个点外的所有点。

输入输出格式

输入格式


第一行一个整数 $n$。 第二行 $n$ 个整数 $P_i$。 第三行 $n$ 个小写字母 $c_i$,**字符与字符间没有空格**。 接下来 $n - 1$ 行,描述树 $T$,每行两个整数 $u,v$,表示 $u,v$ 存在一条边。 行末可能有多余空格(慎用 `getchar()`)。

输出格式


输出 $n$ 行,表示每一个点的答案,按照编号从小到大输出。

输入输出样例

输入样例 #1

7
2 1 1 9 8 5 1
zzabcad
1 2
2 3
3 4
3 5
5 6
5 7

输出样例 #1

3
3
3
1
1
1
1

输入样例 #2

12
1 2 2 4 1 3 4 3 1 4 3 1 
baabbbbbbbaa
4 6
5 7
1 2
12 10
8 2
10 11
5 9
10 3
2 3
4 3
4 5

输出样例 #2

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

说明

### 样例一解释: 样例中树的形态: ![](https://cdn.luogu.com.cn/upload/image_hosting/6vbio7vo.png?x-oss-process=image/resize,h_450,m_lfit) 对于 $1$ 号节点: $P_1=2$。 | 序列| 权值 | 最长不下降子序列长度 | 最长不下降子序列 | | :----------: | :----------: | :----------: | :----------: | | 1 | z | 1 | z | | 1 3 | za | 1 | z | | 1 3 4 | zab | 2 | ab | | 1 3 5 | zac | 2 | ac | | 1 3 5 6 | zaca | 2 | ac | | 1 3 5 7 | zacd| 3 | acd | 长度最长的最长不降子序列:acd。 $2$ 号节点和 $1$ 号节点同理。 对于 $3$ 号节点: $P_3=1$。 | 序列| 权值 | 最长不下降子序列长度 | 最长不下降子序列 | | :----------: | :----------: | :----------: | :----------: | | 3 | a | 1 | a | | 3 4 | ab | 1 | ab | | 3 5 | ac | 2 | ac | | 3 5 6 | aca | 2 | ac | |3 5 7 | acd | 3 |acd | 长度最长的最长不降子序列:acd。 对于 $4,5,6,7$,它的所有序列中都只有它自己一个点,所以输出 $1$。 ### 数据范围 本题采用 Subtask 计分。 | Subtask | Limit | Pts | | :-----------: | :-----------: | :-----------: | | 0 | $n \le 100$ | 5 | | 1 | $n \le 2000$ | 15 | | 2 | $\forall 1 \le i \le n \quad P_i=1$ | 30 | | 3 | Empty | 50 | 对于 $100\%$ 的数据: $1 \le n \le 10^5$。 $\forall 1 \le i \le n$, $c_i$ 为小写字母,$1 \le P_i \le n$。 给出的树连通且合法。