QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

# 7776. 超现实树

统计

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

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

  • 空串为 $ k $-超现实数串;
  • 如果 $ s, t $ 为 $ k $-超现实数串, 那么 $ s + t $ (加法表示字符串拼接) 为 $ k $-超现实数串;
  • 如果 $ k + 1 $ 个字符串 $ s_1, s_2, \cdots, s_{k + 1} $ 都是 $ k $-超现实数串, 那么 $ \texttt{`\{'} + s_1 + \texttt{`|'} + s_2 + \texttt{`|'} + \cdots + \texttt{`|'} + s_{k + 1} + \texttt{`\}'} $ 为 $ k $-超现实数串;
  • $ k $-超现实数串仅限于此.

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

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

输入格式

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

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

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

输出格式

输出一行 $ m + 1 $ 个整数, 分别表示 $ k = 0, 1, \cdots, 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.

限制与约定

对于所有数据, 有 $ 2 \leq n \leq 10^5 $, $ 0 \leq m \leq n - 2 $, $ a_i \in \{\texttt{`\{'}, \texttt{`|'}, \texttt{`\}'}\} $.

  • Subtask 1 (5 分): $ n \leq 4601 $;
  • Subtask 2 (20 分): 对每条边 $ (x, y) $ 有 $ y = x + 1 $;
  • Subtask 3 (5 分): $ a_i \neq \texttt{`|'} $, $ m = 0 $;
  • Subtask 4 (15 分, 依赖 Subtask 3): $ m \leq 3 $;
  • Subtask 5 (25 分, 依赖 Subtask 1): $ n \leq 5 \times 10^4 $;
  • Subtask 6 (30 分, 依赖 Subtask 1, 2, 3, 4, 5): 无特殊限制.

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