#CF570D. Tree Requests
Tree Requests
markdown
D. 树的询问
| 项目 | 说明 |
|---|---|
| 时间限制 | 秒 |
| 内存限制 | 兆字节 |
| 输入 | 标准输入 |
| 输出 | 标准输出 |
Roman 种了一棵有 个顶点的树。每个顶点上写有一个小写英文字母。顶点 是树的根,其余 个顶点在树中都有一个父节点。每个顶点通过一条边与其父节点相连。顶点 的父节点是 ,并且父节点的编号总是小于该顶点的编号(即 )。
顶点的深度定义为从根节点沿着边到达该顶点所经过的节点个数。特别地,根节点的深度为 。
我们说顶点 在顶点 的子树中,如果从 出发,不断向父节点移动,可以到达 。特别地,顶点 也在它自己的子树中。
Roman 会给你 个询问,第 个询问包含两个数 和 。考虑所有在顶点 的子树中且深度为 的顶点。判断能否用这些顶点上的字母构成一个回文串。顶点上的字母可以按任意顺序重新排列,但必须使用所有字母。
输入
第一行包含两个整数 ()—— 分别表示树中的顶点数和询问数。
接下来一行包含 个整数 —— 从第 个到第 个顶点的父节点编号()。
再下一行包含 个小写英文字母,其中第 个字母是写在顶点 上的字母。
接下来的 行描述询问,第 行包含两个数 ()—— 第 个询问中的顶点和深度。
输出
输出 行。在第 行中,如果第 个询问中可以用这些顶点上的字母构成回文串,则输出 Yes(不带引号),否则输出 No(不带引号)。
样例
输入
6 5
1 1 1 3 3
zacccd
1 1
3 3
4 1
6 1
1 2
输出
Yes
No
Yes
Yes
Yes
注释
字符串 是回文串,如果它从左向右读和从右向左读相同。特别地,空字符串也是回文串。
样例解释:
- 第一个询问中,满足条件的顶点只有顶点 ,我们可以构成回文串
"z"。 - 第二个询问中,顶点 和 满足条件,它们分别包含字母
'c'和'd'。无法用它们构成回文串。 - 第三个询问中,在深度 且位于顶点 的子树中的顶点不存在。我们可以构成空回文串。
- 第四个询问中,在深度 且位于顶点 的子树中的顶点不存在。我们可以构成空回文串。
- 第五个询问中,顶点 、 和 满足上述条件,它们分别包含字母
'a'、'c'和'c'。我们可以构成回文串"cac"。