编程题
### 问题描述
小明最近想要探索地下世界,已知他家地下有 $n$ 个休息站和 $n-1$ 条隧道。整个隧道结构为树形结构,隧道编号为 $1,2,3,\dots,n$ ,每条隧道连接着两个休息站,第 $1$ 个休息站为整个隧道的根节点。但是他家的地下隧道都是十分狭窄的。现在他想雇佣 $k$ 个工人来为他将这些狭窄的隧道扩宽,每个工人都拥有 $x_i$ 的体力,位于第 $p_i$ 个休息站中,并且每个工人都只能向下扩宽隧道,如果可以朝多条隧道前进那么工人可以选择任意一条向下扩宽,但是一旦向下就不能原路返回。每次向下扩宽都会消耗一点体力,如果下方已经被其他人扩宽过,那么则不需要消耗体力,体力为 $0$ 后工人就会停工。
**每个工人向下扩宽隧道的过程中如果碰到其他工人会与其合作,共同向下扩宽隧道。**。
小明想知道这些工人能为他扩宽多长的隧道,也就是在所有被扩宽的隧道中最深的那条是多长,**隧道长度定义为该隧道经过的休息站个数**。
### 输入格式
第一行,两个正整数, $n$ $(1\leq n\leq 2\times 10^5)$ , $k$ $(1\leq k\leq 2\times 10^5)$ ,代表小明家有 $n$ 个休息站和小明雇佣了 $k$ 名工人。
第二行,包含 $n$ 个正整数 $p_i$ $(1\leq p_i \leq n)$ 代表第 $i$ 个休息站的和第 $p_i$ 个休息站相连,**题目保证 1 号休息站一定为根节点**。
接下来 $k$ 行,每行两个正整数 $p_i$ 和 $x_i$ ,代表第 $i$ 位工人位于第 $p_i$ 个休息站并且他拥有 $x_i$ $(1\leq x_i\leq 10^9)$的体力,**注意同一个休息站可以同时存在多个工人**。
### 输出格式
一行,包含一个正整数,代表这些工人能为小明扩宽的最长的隧道长度。
### 样例输入
```
7 2
1 1 2 2 1 4 6
1 2
3 1
```
### 样例输出
```
4
```
### 样例说明
样例中,第一位工人可以从 $1$ 号休息站向 $2$ 号休息站号休息站扩宽,然后再向 $4$ 号休息站扩宽,这时碰到了第二位工人,他们体力值相加 $0+1=1$ 并继续向 $6$ 号休息站扩宽,此时他们的体力都为 $0$ ,于是停工。此时最长的隧道为 $[1\rightarrow2\rightarrow 4\rightarrow6]$ 长度为 $4$ 。