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.
波利卡普斯得到了一棵家族关系树。该树描述了编号为 1 到 n 的 n 个人之间的家族关系,其中每个人至多有一个父辈。
若 a 是 b 的父辈,则称 a 为 b 的 1-祖先。
若 b 存在 1-祖先,且 a 是 b 的 1-祖先的 (k−1)-祖先(其中 k>1),则称 a 为 b 的 k-祖先。
所给的家族关系树中不存在环。换言之,不存在某个人是其自身的祖先(无论是直接还是间接地);即,对任意 x>0,不存在某人是自身的 x-祖先。
若存在某人 z,使得 z 同时是 x 和 y(其中 x=y)的 p-祖先(p>0),则称 x 和 y 为 p-代堂/表兄弟姐妹(简称为 p-代亲)。
波利卡普斯想知道每个人有多少位亲戚、分别属于哪一类。他在一张纸上写下了 m 对整数 (vi,pi)。请帮助他计算:对每一对 (vi,pi),求出人 vi 所拥有的 pi-代亲的数量。
输入格式
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).
第一行输入包含一个整数 n(1≤n≤105)—— 表示家谱树中的人数。
第二行包含 n 个用空格分隔的整数 r1,r2,…,rn,其中 ri(1≤ri≤n)表示第 i 个人的父节点编号;若第 i 个人没有父节点,则 ri=0。题目保证家庭关系不构成环。
第三行输入一个整数 m(1≤m≤105)—— 表示 Polycarpus 提出的家庭关系查询次数。
接下来 m 行,每行包含一对用空格分隔的整数。第 i 行包含两个数 vi 和 pi(1≤vi,pi≤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测评打分。不知道怎么写?