Logo 邂逅编程之美

UOJ

时间限制:N/A 空间限制:N/A
Statistics

题目描述

给出一棵 $n$ 个点的有根树。

$q$ 次询问,每次给出 $l$、$r$,表示询问树上总共有多少个点,满足其子树包含 $[l,r]$ 中的至少一个点。

输入格式

输入的第一行包含两个数 $n$、$q$。

第二行包含 $n$ 个数 $f_{1 \dots n}$,$f_i$ 表示 $i$ 在树上的父亲。若 $i$ 为根,则 $f_i=0$。

接下来 $q$ 行,每行包含两个数 $l$、$r$,表示一次询问。

输出格式

输出应包含 $q$ 行,第 $i$ 行包含一个数,表示你对第 $i$ 次询问求出的答案。

样例数据

样例 1 输入

5 6
3 0 2 2 3
1 1
4 5
1 4
3 5
1 5
2 4

样例 1 输出

3
4
4
4
5
3

样例 2~5

见下发文件。

数据规模与约定

对于所有数据,有 $1 \le n \le 5 \times 10^5$,$1 \le q \le 10^5$,$0 \le f_i \le n$,$1 \le l \le r \le n$。

子任务编号 $n \le$ $q \le$ 分值
1 $100$ $100$ $5$
2 $1000$ $1000$ $20$
3 $10^5$ $10^5$ $35$
4 $5 \times 10^5$ $10^5$ $40$