#ABC351G. Hash on Tree

Hash on Tree

Hash on Tree

题目描述

有一棵包含 NN 个顶点的有根树,顶点编号为 11NN,根为顶点 11。对于每个 2iN2\le i\le N,顶点 ii 的父亲是 pip_i,并且 pi<ip_i<i

每个顶点 ii 有一个权值 AiA_i。按照从编号大到编号小的顺序定义 f(i)f(i)

  • 若顶点 ii 是叶子,则 f(i)=Aif(i)=A_i
  • 否则,设 C(i)C(i) 为顶点 ii 的所有儿子组成的集合,则
f(i)=Ai+cC(i)f(c).f(i)=A_i+\prod_{c\in C(i)} f(c).

树的哈希值定义为 f(1)mod998244353f(1)\bmod 998244353

你需要依次处理 QQ 次修改。每次修改给出 v,xv,x,把 AvA_v 改为 xx,并输出修改后树的哈希值。

输入格式

第一行输入两个整数 N,QN,Q

第二行输入 N1N-1 个整数 p2,p3,,pNp_2,p_3,\ldots,p_N

第三行输入 NN 个整数 A1,A2,,ANA_1,A_2,\ldots,A_N

接下来 QQ 行,每行输入两个整数 v,xv,x,表示把 AvA_v 修改为 xx

输出格式

输出 QQ 行。第 ii 行输出第 ii 次修改后的树哈希值。

样例输入 1

3 2
1 1
3 5 1
3 4
2 1

样例输出 1

23
7

样例输入 2

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

样例输出 2

29
17
17
47

样例输入 3

10 10
1 2 1 2 5 6 3 5 1
766294629 440423913 59187619 725560240 585990756 965580535 623321125 550925213 122410708 549392044
1 21524934
9 529970099
6 757265587
8 219853537
5 687675301
5 844033519
8 780395611
2 285523485
6 13801766
3 487663184

样例输出 3

876873846
952166813
626349486
341294449
466546009
331098453
469507939
414882732
86695436
199797684

数据范围

  • 2N2×1052\le N\le 2\times 10^5
  • 1Q2×1051\le Q\le 2\times 10^5
  • 1pi<i1\le p_i<i
  • 0Ai<9982443530\le A_i<998244353
  • 1vN1\le v\le N
  • 0x<9982443530\le x<998244353
  • 所有输入均为整数。
子任务编号 分值 特殊限制
1 20 N50N\le 50Q100Q\le 100
2 对所有 2iN2\le i\le N,均有 pi=i1p_i=i-1
3 树的最大深度不超过 2020,且每个顶点的儿子数不超过 2020
4 40 无特殊限制

样例解释 1

第一次修改后 A=(3,5,4)A=(3,5,4),两个叶子的值分别为 5,45,4,所以根的值为 3+5×4=233+5\times4=23

第二次修改后 A=(3,1,4)A=(3,1,4),根的值为 3+1×4=73+1\times4=7