QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100
[-6]

# 7776. 超现实树

统计

Alek 喜欢打信息竞赛, 尤其喜欢超现实树. 超现实树, 顾名思义, 就是树上的超现实数.

Alek 认为, 对于常数 k, 一个字符串被称为 "k-超现实数串", 如果其只包含字符 `{',`|',`}', 且:

  • 空串为 k-超现实数串;
  • 如果 s,tk-超现实数串, 那么 s+t (加法表示字符串拼接) 为 k-超现实数串;
  • 如果 k+1 个字符串 s1,s2,,sk+1 都是 k-超现实数串, 那么 `{'+s1+`|'+s2+`|'++`|'+sk+1+`}'k-超现实数串;
  • k-超现实数串仅限于此.

给定一棵 n 个点的无根树, 节点编号为 1n. 每个点 i 上有一个字符 ai{`{',`|',`}'}.

给定整数 m, Alek 希望你对 k=0,1,,m 分别求出: 有多少有序对 (x,y), 1x,yn, 使得树上从点 x 到点 y 的唯一简单路径上的字符依次拼接所得字符串是 k-超现实数串.

输入格式

第一行两个整数 n,m, 分别表示树的节点数, 和需要求答案的 k 的上限.

第二行一个字符串 a, a 的第 i 个字符表示点 i 上的字符.

接下来 n1 行, 每行两个整数 x,y, 表示存在一条连接点 x 和点 y 的边.

输出格式

输出一行 m+1 个整数, 分别表示 k=0,1,,m 时的答案.

样例

样例 1 输入

5 3
|{}}}
2 1
3 2
4 1
5 1

样例 1 输出

1 2 0 0

样例 2 输入

10 8
|}||}{|{{{
2 1
3 1
4 3
5 2
6 5
7 5
8 4
9 2
10 3

样例 2 输出

2 0 1 1 0 0 0 0 0

样例 3

见附加文件 ex_surreal3.in/ans.

限制与约定

对于所有数据, 有 2n105, 0mn2, ai{`{',`|',`}'}.

  • Subtask 1 (5 分): n4601;
  • Subtask 2 (20 分): 对每条边 (x,y)y=x+1;
  • Subtask 3 (5 分): ai`|', m=0;
  • Subtask 4 (15 分, 依赖 Subtask 3): m3;
  • Subtask 5 (25 分, 依赖 Subtask 1): n5×104;
  • Subtask 6 (30 分, 依赖 Subtask 1, 2, 3, 4, 5): 无特殊限制.

时间限制: 1s; 空间限制: 512MB.