编程题
### 问题描述 在狮子王国中,所有的狮子都居住在一棵家族树上。树的根节点是狮王,编号为 1。每个狮子都有一个名字,名字的首字母是一个大写字母($A\sim Z$)。每只狮子到狮王的路径上经过的狮子数目(包含该狮子与狮王)被定义为它的嗜好深度。 每年,狮子王国都会举行一场盛大的家族聚会。在聚会上,选定一只狮子 $a$ 作为本届聚会的组织者,然后选定一个正整数 $b$ 作为本届聚会的难度。**以狮子 $a$ 作为子树的根**,选择嗜好深度为 $b$ 的所有狮子,将这些狮子的名字首字母重新排列,看是否可以构成一个回文串。如果可以构成回文串,则本届家族聚会算成功,否则就算失败。注意,空字符串也被认定为回文串。 狮王很关心每届聚会的成功率,但是手头上的家族树结构太复杂,无法判断每次聚会设置的 $a$、$b$ 是否可以使得聚会成功。你能帮助狮王解答这个问题吗? ### 输入格式 第一行包含两个整数 $n$ 和 $m$($1\leq n,m\leq 10^5$),表示狮子的数量和询问的数量。 接下来 $n-1$ 行,每行包含两个整数 $u$ 和 $v$($1\leq u,v \leq n$),表示树上存在一条从节点 $u$ 到节点 $v$ 的边。 接下来一行,包含一个长度为 $n$ 的字符串 $s$,表示每只狮子的名字,其中第 $i$ 个字符表示第 $i$ 只狮子的名字首字母。$s$ 只包含大写字母 $A \sim Z$。 接下来 $m$ 行,每行包含两个整数 $a_i$ 和 $b_i$($1\leq a_i,b_i \leq n$),表示第 $i$ 届聚会的组织者和难度。 ### 输出格式 输出 $m$ 行,每行包含一个字符串,如果本届家族聚会能成功,则输出 `Y`,否则输出 `N`。 ### 样例输入 ```text 6 3 1 2 1 3 1 6 2 4 2 5 ABCDEB 1 2 2 1 2 3 ``` ### 样例输出 ```text Y Y N ``` ### 说明 在第一个询问中,以狮子 $1$ 作为子树的根,嗜好深度为 $2$ 的狮子的首字母包含 `B`, `C`,`B`,可以形成回文串 `BCB`。 在第二个询问中,以狮子 $2$ 作为子树的根,不存在嗜好深度为 $1$ 的狮子,可以形成一个空的回文串。 在第三个询问中,以数字 $2$ 作为子树的根,嗜好深度为 $3$ 的狮子的首字母包含 `D`,`E`,无法构成回文串。
查看答案
赣ICP备20007335号-2