题目背景
Alek 喜欢打信息竞赛,尤其喜欢超现实树。超现实树,顾名思义,就是树上的超现实数。
题目描述
Alek 认为,对于常数 k,一个字符串被称为「k-超现实数串」,如果其只包含字符 {,|,},且:
- 空串为 k-超现实数串;
- 如果 s,t 为 k-超现实数串,那么 s+t 为 k-超现实数串;
- 如果 k+1 个字符串 s1,s2,⋯,sk+1 都是 k-超现实数串,那么 {+s1+|+s2+|+⋯+|+sk+1+} 为 k-超现实数串;
- k-超现实数串仅限于此。
给定一棵 n 个点的无根树,节点编号为 1∼n。每个点 i 上有一个字符 ai∈{{,|,}}。
给定整数 m,Alek 希望你对 k=0,1,⋯,m 分别求出:有多少有序对 (x,y),1≤x,y≤n,使得树上从点 x 到点 y 的唯一简单路径上的字符依次拼接所得字符串是 k-超现实数串。
输入格式
第一行两个整数 n,m,分别表示树的节点数,和需要求答案的 k 的上限。
第二行一个字符串 a,a 的第 i 个字符表示点 i 上的字符。
接下来 n−1 行,每行两个整数 x,y,表示存在一条连接点 x 和点 y 的边。
输出格式
输出一行 m+1 个整数,分别表示 k=0,1,⋯,m 时的答案。
提示
对于所有数据,有 2≤n≤105,0≤m≤n−2,ai∈{{,|,}}。
- Subtask 1(5 分):n≤4601;
- Subtask 2(20 分):对每条边 (x,y) 有 y=x+1;
- Subtask 3(5 分):ai=|, m=0;
- Subtask 4(15 分,依赖 Subtask 3):m≤3;
- Subtask 5(25 分,依赖 Subtask 1):n≤5×104;
- Subtask 6(30 分,依赖 Subtask 1, 2, 3, 4, 5):无特殊限制。