#9936. 回文子树

    ID: 9936 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>DFS序深度分组位压缩回文判定子树查询离线查询

回文子树

题目描述

给定一棵包含 nn 个节点的有根树,根节点为1。每个节点上有一个小写字母。处理 mm 次查询,每次查询给出两个参数 vvhh,要求判断在以 vv 为根的子树中,所有深度恰好为 hh 的节点上的字母能否重新排列形成一个回文串。若能,输出 Yes,否则输出 No

输入格式

第一行包含两个整数 nnmm (1n,m5×1051 \leq n, m \leq 5 \times 10^5),分别表示节点数和查询次数。

接下来 n1n-1 行描述树的结构,第 ii 行包含两个整数 pi+1p_{i+1}ci+1c_{i+1},表示节点 i+1i+1 的父节点编号和该节点上的字符。

最后 mm 行每行两个整数 vvhh,表示一个查询。

输出格式

对每个查询输出一行结果,共 mm 行。

6 5
1 a
2 a
3 b
4 b
5 c
2 3
1 2
3 2
2 4
5 3
Yes
No
Yes
No
No

样例解释

第一个查询要求检查节点2的子树中深度3的节点(节点5和6)的字符集合。字符集合为 {c, c},可以排列成 cc,是回文。

数据范围与提示

对于 100%100\% 的数据,所有节点的深度不超过 5×1055 \times 10^5,字符均为小写字母。