#P15468. 灵能网络

    ID: 14683 传统题 2000ms 512MiB 尝试: 1 已通过: 1 难度: 8 上传者: 标签>CF2400树链剖分线段树数据结构LCABFS

灵能网络

题目描述

有一棵包含 nn 个节点的灵能网络,网络结构是一棵树,根节点为 11。每条边的长度均为 11

每个节点 uu 上都有一个能量值 xux_u。树上两点之间的距离定义为它们之间唯一简单路径上的边数。

接下来有 QQ 次事件,每次事件属于下面四种之一。

事件 1:查询单点

给定一个节点 uu,询问当前节点 uu 的能量值。查询不会改变任何节点的能量值。

事件 2:局部波动

给定一个节点 uu 和三个非负整数 k,c,dk,c,d

对于所有与 uu 的距离不超过 kk 的节点 vv,将其能量值更新为

xvxv×c+d.x_v\leftarrow x_v\times c+d.

事件 3:子树共振

给定一个节点 uu 和两个非负整数 c,dc,d

对于所有位于 uu 子树中的节点 vv,将其能量值更新为

xvxv×c+d.x_v\leftarrow x_v\times c+d.

事件 4:路径传导

给定两个节点 u,vu,v 和两个非负整数 c,dc,d

对于 uuvv 的简单路径上的所有节点 ww,包括端点 u,vu,v,将其能量值更新为

xwxw×c+d.x_w\leftarrow x_w\times c+d.

对于每次事件 1,输出查询结果。所有输出结果均对 998244353998244353 取模。

输入格式

第一行两个正整数 n,Qn,Q

接下来 n1n-1 行,每行两个正整数 u,vu,v,表示树上的一条边。

接下来一行 nn 个非负整数,依次表示初始能量值 x1,x2,,xnx_1,x_2,\dots,x_n

接下来 QQ 行,每行表示一次事件,格式如下:

  • 1 u
  • 2 u k c d
  • 3 u c d
  • 4 u v c d

变量含义与题目描述一致。

输出格式

对于每次事件 1,输出一行一个非负整数,表示当前节点的能量值,结果对 998244353998244353 取模。

样例 1 输入

7 12
1 2
2 3
1 4
4 5
1 6
6 7
0 0 0 0 0 0 0
2 1 2 10 1
3 1 10 2
4 2 5 10 3
3 2 10 4
2 3 2 10 5
1 1
1 2
1 3
1 4
1 5
1 6
1 7

样例 1 输出

1235
12345
1245
123
123
12
12

数据范围

保证所有数据满足:2n,Q1052\le n,Q\le 10^50c,d<9982443530\le c,d<9982443530k100\le k\le 10

Subtask n,Qn,Q kk 操作种类 分值
11 1000\le 1000 10\le 10 1,2,3,41,2,3,4 1010
22 105\le 10^5 10\le 10 1,21,2 1515
33 =1=1 1,2,31,2,3
44 10\le 10 1,3,41,3,4
55 =1=1 1,2,3,41,2,3,4 1818
66 105\le 10^5 10\le 10 2727