SZ#G6MT04. 【GESP强化 六级】家族保险

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB
    ID: 11436 传统题 2000ms 256MiB 尝试: 1 已通过: 1 难度: 入门 上传者: 标签>GESPGESP强化C++c++编程题多叉树有根树动态维护

题目描述

珅泽教育保存着一份包含 NN 名成员的家族记录,成员编号为 11NN。成员 11 是家族的祖先。对于每名成员 ii2iN2\le i\le N),其父亲编号为 pip_i,并且一定满足 pi<ip_i<i

这份记录中还有 MM 份保险。第 jj 份保险由成员 xjx_j 持有,保险等级为 yjy_j。这份保险能够覆盖成员 xjx_j 本人,以及家族树中与 xjx_j 相隔不超过 yjy_j 代的所有后代。也就是说,沿着父子关系从 xjx_j 向下走至多 yjy_j 条边能够到达的人,都会被这份保险覆盖。

一名成员只要被至少一份保险覆盖,就算作受保成员。请计算整个家族中受保成员的数量。

输入格式

第一行输入两个整数 NNMM,分别表示成员数量和保险数量。

第二行输入 N1N-1 个整数 p2,p3,,pNp_2,p_3,\ldots,p_N,其中 pip_i 表示成员 ii 的父亲。

接下来 MM 行,第 jj 行输入两个整数 xjx_jyjy_j,表示第 jj 份保险由成员 xjx_j 持有,保险等级为 yjy_j

输出格式

输出一个整数,表示至少被一份保险覆盖的成员数量。

1 5

1 1
1 1
1 1
1 0
1 0
1
6 6
1 1 3 4 1
4 2
4 1
1 1
2 5
5 5
6 4
6
8 3
1 2 1 2 5 3 3
8 0
4 2
2 5
7

数据范围与约定

  • 1N3×1051\le N\le3\times10^5
  • 0M3×1050\le M\le3\times10^5
  • 1pi<i1\le p_i<i
  • 1xjN1\le x_j\le N
  • 0yjN0\le y_j\le N