CF208E.Blood Cousins

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Polycarpus got hold of a family relationship tree. The tree describes family relationships of n people, numbered 1 through n. Each person in the tree has no more than one parent.

Let's call person a a 1-ancestor of person b, if a is the parent of b.

Let's call person a a k-ancestor (k > 1) of person b, if person b has a 1-ancestor, and a is a (k - 1)-ancestor of b's 1-ancestor.

Family relationships don't form cycles in the found tree. In other words, there is no person who is his own ancestor, directly or indirectly (that is, who is an x-ancestor for himself, for some x, x > 0).

Let's call two people x and y (x ≠ y) p-th cousins (p > 0), if there is person z, who is a p-ancestor of x and a p-ancestor of y.

Polycarpus wonders how many counsins and what kinds of them everybody has. He took a piece of paper and wrote m pairs of integers v__i, p__i. Help him to calculate the number of p__i-th cousins that person v__i has, for each pair v__i, p__i.

波利卡普斯得到了一棵家族关系树。该树描述了编号为 11 到 nn 的 nn 个人之间的家族关系,其中每个人至多有一个父辈。

若 aa 是 bb 的父辈,则称 aa 为 bb 的 1-祖先。

若 bb 存在 1-祖先,且 aa 是 bb 的 1-祖先的 (k−1)(k-1)-祖先(其中 k>1k > 1),则称 aa 为 bb 的 kk-祖先。

所给的家族关系树中不存在环。换言之,不存在某个人是其自身的祖先(无论是直接还是间接地);即,对任意 x>0x > 0,不存在某人是自身的 xx-祖先。

若存在某人 zz,使得 zz 同时是 xx 和 yy(其中 x≠yx \ne y)的 pp-祖先(p>0p > 0),则称 xx 和 yy 为 pp-代堂/表兄弟姐妹(简称为 pp-代亲)。

波利卡普斯想知道每个人有多少位亲戚、分别属于哪一类。他在一张纸上写下了 mm 对整数 (vi,pi)(v_i, p_i)。请帮助他计算:对每一对 (vi,pi)(v_i, p_i),求出人 viv_i 所拥有的 pip_i-代亲的数量。

输入格式

The first input line contains a single integer n (1 ≤ n ≤ 105) — the number of people in the tree. The next line contains n space-separated integers _r_1, _r_2, ..., r__n, where r__i (1 ≤ r__i ≤ n) is the number of person i's parent or 0, if person i has no parent. It is guaranteed that family relationships don't form cycles.

The third line contains a single number m (1 ≤ m ≤ 105) — the number of family relationship queries Polycarus has. Next m lines contain pairs of space-separated integers. The i-th line contains numbers v__i, p__i (1 ≤ v__i, p__i ≤ n).

第一行输入包含一个整数 nn(1≤n≤1051 \leq n \leq 10^5)—— 表示家谱树中的人数。
第二行包含 nn 个用空格分隔的整数 r1,r2,…,rnr_1, r_2, \dots, r_n,其中 rir_i(1≤ri≤n1 \leq r_i \leq n)表示第 ii 个人的父节点编号;若第 ii 个人没有父节点,则 ri=0r_i = 0。题目保证家庭关系不构成环。

第三行输入一个整数 mm(1≤m≤1051 \leq m \leq 10^5)—— 表示 Polycarpus 提出的家庭关系查询次数。
接下来 mm 行,每行包含一对用空格分隔的整数。第 ii 行包含两个数 viv_i 和 pip_i(1≤vi,pi≤n1 \leq v_i, p_i \leq n)。

输出格式

Print m space-separated integers — the answers to Polycarpus' queries. Print the answers to the queries in the order, in which the queries occur in the input.

输出 m 个空格分隔的整数——即 Polycarpus 查询的答案。请按照输入中查询出现的顺序输出答案。

输入输出样例

  • 输入#1

    6
    0 1 1 0 4 4
    7
    1 1
    1 2
    2 1
    2 2
    4 1
    5 1
    6 1

    输出#1

    0 0 1 0 0 1 1

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

首页