小 W 是学校机房的管理员。机房里的 N 台电脑用 N-1 条网线连成了一个树形网络:每条网线连接两台电脑,且任意两台电脑之间的通信路径唯一。其中编号为 1 的电脑是服务器,即整棵树的根(我们称电脑 y 在电脑 x 的子树里,当且仅当电脑 x 处在电脑 y 到服务器 1 的路径上)。
学校购买了一批电子学习资源包,编号为 1, 2, \dots, 10^5,每个资源包都可以无限次分发。当小 W 把编号为 c 的资源包推送到电脑 x 时,电脑 x 子树里的所有电脑都会保存一份该资源包。同一台电脑重复收到同一编号的资源包时只保留一份。例如,一台电脑已保存资源包 [1,2,3],再收到编号为 4 的资源包后,它保存的资源包变为 [1,2,3,4]。
推送了若干次之后,小 W 想了解资源的分发情况。定义电脑 x 的『资源丰富度』为它保存的不同资源包的总数。当小 W 查询电脑 x 时,你应该回答电脑 x 的子树中所有电脑的资源丰富度之和。
第一行,N 和请求数 Q。
接下来 N-1 行每行两个用空格隔开的数 a 和 b,表示电脑 a 和 b 之间有一条网线相连。
最后 Q 行每行一个请求,格式及对应含义如下:
1 x c(修改):表示小 W 把编号为 c 的资源包推送到电脑 x,使得其子树上所有电脑都保存一份。2 x(询问):询问电脑 x 的子树中所有电脑的资源丰富度之和。对于每个询问,输出所询问子树的资源丰富度之和。
4 8 1 2 1 3 1 4 2 1 1 2 9 2 1 1 1 9 2 1 2 2 1 1 3 2 4
0 1 4 1 2
6 11 1 2 1 3 3 4 3 5 2 6 1 3 2 2 1 2 3 1 6 5 2 2 1 1 2 2 1 2 3 1 4 7 2 3 2 4
3 3 1 7 3 4 2
9 15 1 2 1 3 2 4 2 5 3 6 6 7 6 8 4 9 1 2 3 2 1 1 6 3 2 3 1 1 3 2 1 1 2 3 2 2 1 4 5 1 9 5 2 2 2 4 1 3 8 2 1 2 7
4 3 9 4 6 4 15 2
样例 1:
树是一个以 1 为中心的"星形"。注意第二次推送 1 1 9 时,电脑 2 已保存资源包 9,只有电脑 1,3,4 是新增的。
样例 2:
第一次推送后,电脑 3,4,5 各保存了资源包 2,因此查询电脑 1 和电脑 3 的答案都是 3。
向电脑 6 推送资源包 5 后,电脑 2 的子树(电脑 2,6)丰富度之和为 0+1=1。
向服务器推送资源包 2 后,全部 6 台电脑都保存了资源包 2(电脑 3,4,5 原本已保存,不重复计算),此时查询电脑 1 得 7。最后向电脑 4 推送资源包 7,电脑 4 保存 {2,7},查询电脑 3 得 1+2+1=4。
对于 100\% 的数据,1\le N,Q,c\le 10^5,1\le a,b,x\le N,输入给出的 N-1 条网线保证构成一棵树。
本题共 20 个测试点,每个测试点 5 分。具体数据范围如下:
| 测试点编号 | N \le | Q \le | 特殊性质 |
|---|---|---|---|
| 1 | 5 | 20 | 无 |
| 2,3 | 10^2 | 2\times 10^2 | 无 |
| 4 \sim 6 | 10^3 | 2\times 10^3 | 无 |
| 7 | 10^5 | 10^5 | A |
| 8 \sim 14 | 10^5 | 10^5 | 无 |
| 15 | 10^5 | 10^5 | B |
| 16 | 10^5 | 10^5 | A、C |
| 17 | 10^5 | 10^5 | D |
| 18 | 10^5 | 10^5 | E |
| 19 | 10^5 | 10^5 | 无 |
| 20 | 10^5 | 10^5 | 无 |
特殊性质 A:树是一条链。
特殊性质 B:树是以服务器 1 为中心的星形树,即除服务器外每台电脑都直接连接服务器。
特殊性质 C:所有推送请求的资源包编号都相同。
特殊性质 D:所有推送请求都推送到服务器 1。
特殊性质 E:所有请求均为询问请求。