#aBC351G. [ABC351G] Hash on Tree

[ABC351G] Hash on Tree

AT_abc351_g [ABC351G] Hash on Tree

题目描述

有一棵有 NN 个顶点的有根树,顶点编号为 11NN
顶点 11 是根,顶点 ii2iN2 \leq i \leq N)的父节点是顶点 pip_i,且 pi<ip_i < i
另外,给定一个数列 A=(A1,A2,,AN)A = (A_1, A_2, \dots, A_N)

有根树的哈希值定义如下:

  • 对于 f(n)f(n)1nN1 \leq n \leq N),按照 n=N,N1,,2,1n = N, N-1, \dots, 2, 1 的顺序进行如下计算:
    • 如果顶点 nn 是叶子节点,则 f(n)=Anf(n) = A_n
    • 如果顶点 nn 不是叶子节点,设 C(n)C(n)nn 的所有子节点的集合,则 f(n)=An+cC(n)f(c)f(n) = A_n + \prod_{c \in C(n)} f(c)
  • 有根树的哈希值为 f(1)mod998244353f(1) \bmod{998244353}

给定 QQ 个查询,请按顺序处理每个查询。
每个查询给定 v,xv, x,将 AvA_v 的值更新为 xx,然后输出当前有根树的哈希值。

输入格式

输入按以下格式从标准输入给出,其中 queryi\mathrm{query}_i 表示第 ii 个查询。

NN QQ
p2p_2 p3p_3 \dots pNp_N
A1A_1 A2A_2 \dots ANA_N
query1\mathrm{query}_1
query2\mathrm{query}_2
\vdots
queryQ\mathrm{query}_Q

每个查询的格式如下:

vv xx

输出格式

输出 QQ 行,第 ii 行输出第 ii 个查询的答案。

输入输出样例 #1

输入 #1

3 2
1 1
3 5 1
3 4
2 1

输出 #1

23
7

输入输出样例 #2

输入 #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

输入 #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 \leq N \leq 2 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1pi<i1 \leq p_i < i
  • 0Ai<9982443530 \leq A_i < 998244353
  • 1vN1 \leq v \leq N
  • 0x<9982443530 \leq x < 998244353
  • 输入的所有值均为整数

样例解释 1

初始时,A=(3,5,1)A = (3, 5, 1)。第 1 个查询按如下方式处理:

  • A3A_3 更新为 44,此时 A=(3,5,4)A = (3, 5, 4)
  • 有根树的哈希值按如下步骤计算为 2323,输出 2323
    • 顶点 33 没有子节点,所以 f(3)=4f(3) = 4
    • 顶点 22 没有子节点,所以 f(2)=5f(2) = 5
    • 顶点 11 有子节点 2,32, 3,所以 f(1)=3+5×4=23f(1) = 3 + 5 \times 4 = 23
    • f(1)mod998244353=23f(1) \bmod{998244353} = 23,作为有根树的哈希值。

第 2 个查询按如下方式处理:

  • A2A_2 更新为 11,此时 A=(3,1,4)A = (3, 1, 4)
  • 有根树的哈希值按如下步骤计算为 77,输出 77
    • 顶点 33 没有子节点,所以 f(3)=4f(3) = 4
    • 顶点 22 没有子节点,所以 f(2)=1f(2) = 1
    • 顶点 11 有子节点 2,32, 3,所以 f(1)=3+1×4=7f(1) = 3 + 1 \times 4 = 7
    • f(1)mod998244353=7f(1) \bmod{998244353} = 7,作为有根树的哈希值。

由 ChatGPT 4.1 翻译