CF570D.Tree Requests

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Roman planted a tree consisting of n vertices. Each vertex contains a lowercase English letter. Vertex 1 is the root of the tree, each of the n - 1 remaining vertices has a parent in the tree. Vertex is connected with its parent by an edge. The parent of vertex i is vertex p__i, the parent index is always less than the index of the vertex (i.e., p__i < i).

The depth of the vertex is the number of nodes on the path from the root to v along the edges. In particular, the depth of the root is equal to 1.

We say that vertex u is in the subtree of vertex v, if we can get from u to v, moving from the vertex to the parent. In particular, vertex v is in its subtree.

Roma gives you m queries, the i-th of which consists of two numbers v__i, h__i. Let's consider the vertices in the subtree v__i located at depth h__i. Determine whether you can use the letters written at these vertices to make a string that is a palindrome. The letters that are written in the vertexes, can be rearranged in any order to make a palindrome, but all letters should be used.

罗马种了一棵包含 nn 个顶点的树。每个顶点上写有一个小写英文字母。顶点 11 是这棵树的根,其余 n−1n-1 个顶点在树中均有父节点。每个顶点通过一条边与其父节点相连。顶点 ii 的父节点是顶点 pip_i,且父节点的编号恒小于该顶点的编号(即 pi<ip_i < i)。

一个顶点的深度定义为从根节点到该顶点 vv 沿边所经过的节点数(含端点)。特别地,根节点的深度为 11。

若从顶点 uu 出发,不断沿父边向上移动可到达顶点 vv,则称顶点 uu 位于顶点 vv 的子树中。特别地,顶点 vv 自身也属于其自身的子树。

罗玛向你提出 mm 个查询,其中第 ii 个查询包含两个整数 viv_i 和 hih_i。考虑顶点 viv_i 的子树中所有深度恰好为 hih_i 的顶点。请判断:能否将这些顶点上的字母重新排列(可任意调整顺序),构成一个回文串?注意:必须使用这些顶点上的全部字母。

输入格式

The first line contains two integers n, m (1 ≤ n, m ≤ 500 000) — the number of nodes in the tree and queries, respectively.

The following line contains n - 1 integers _p_2, _p_3, ..., p__n — the parents of vertices from the second to the n-th (1 ≤ p__i < i).

The next line contains n lowercase English letters, the i-th of these letters is written on vertex i.

Next m lines describe the queries, the i-th line contains two numbers v__i, h__i (1 ≤ v__i, h__i ≤ n) — the vertex and the depth that appear in the i-th query.

第一行包含两个整数 nn、mm(1≤n,m≤500 0001 \leq n, m \leq 500\,000),分别表示树中节点的数量和查询的数量。

接下来一行包含 n−1n-1 个整数 p2, p3, …, pnp_2,\,p_3,\,\dots,\,p_n,表示从第 22 号节点到第 nn 号节点的父节点(1≤pi<i1 \leq p_i < i)。

下一行包含 nn 个小写英文字母,其中第 ii 个字母写在第 ii 号节点上。

接下来的 mm 行描述查询,其中第 ii 行包含两个数 viv_i、hih_i(1≤vi, hi≤n1 \leq v_i,\,h_i \leq n),分别表示第 ii 个查询中指定的节点和深度。

输出格式

Print m lines. In the i-th line print "Yes" (without the quotes), if in the i-th query you can make a palindrome from the letters written on the vertices, otherwise print "No" (without the quotes).

输出 m 行。在第 i 行中,如果在第 i 次查询中能够利用顶点上的字母构成回文串,则输出 "Yes"(不带引号);否则输出 "No"(不带引号)。

输入输出样例

  • 输入#1

    6 5
    1 1 1 3 3
    zacccd
    1 1
    3 3
    4 1
    6 1
    1 2

    输出#1

    Yes
    No
    Yes
    Yes
    Yes

说明/提示

String s is a palindrome if reads the same from left to right and from right to left. In particular, an empty string is a palindrome.

Clarification for the sample test.

In the first query there exists only a vertex 1 satisfying all the conditions, we can form a palindrome "z".

In the second query vertices 5 and 6 satisfy condititions, they contain letters "с" and "d" respectively. It is impossible to form a palindrome of them.

In the third query there exist no vertices at depth 1 and in subtree of 4. We may form an empty palindrome.

In the fourth query there exist no vertices in subtree of 6 at depth 1. We may form an empty palindrome.

In the fifth query there vertices 2, 3 and 4 satisfying all conditions above, they contain letters "a", "c" and "c". We may form a palindrome "cac".

字符串 ss 是回文串,当且仅当它从左到右读与从右到左读完全相同。特别地,空字符串是回文串。

样例测试的说明:

在第一个查询中,仅存在顶点 1 满足所有条件,我们可以用其构成回文串 "z"。

在第二个查询中,顶点 5 和 6 满足条件,它们分别包含字母 "с" 和 "d"。无法用它们构成回文串。

在第三个查询中,在深度为 1 且位于顶点 4 的子树内的顶点不存在。此时可构成空回文串。

在第四个查询中,在深度为 1 且位于顶点 6 的子树内的顶点不存在。此时可构成空回文串。

在第五个查询中,顶点 2、3 和 4 满足上述所有条件,它们分别包含字母 "a"、"c" 和 "c"。我们可以用它们构成回文串 "cac"。

输入解题思路,AI测评打分。不知道怎么写?

首页