编程题
### 问题描述 在农场里,小齐正在雪地中艺术地堆雪人。她堆了一颗抽象的雪人树,由 $N$ 个雪球构成,雪球之间通过 $N-1$ 条分支相连,确保每两个雪球之间都有唯一的路径。 小齐在雪人的一个雪球上添加了一个鼻子,将其标记为雪人的头。为了增加视觉效果,她计划使用不同颜色的染料给雪球上色,她有无限多的装满各种颜色染料的桶。 当小齐给一个雪球上色时,这个颜色将传播到其子树中的所有雪球(雪球 $y$ 在雪球 $x$ 的子树中,如果 $x$ 到头部雪球的路径上包含 $y$)。通过仔细施加每种颜色,小齐确保每个雪球都会保留它已经染过的所有颜色。例如,如果一个雪球已经染过颜色 $[1,2,3]$,那么给它涂上颜色 $4$,那么这个雪球将拥有颜色 $[1,2,3,4]$。 雪球染色后,小齐可能想知道她雪人的某一部分有多丰富多彩。雪球 $x$ 的“色彩丰富度”等于颜色种类数,即雪球 $x$ 上染过颜色 $c$ 的不同 $c$ 的数量。如果小齐询问你关于雪球 $x$ 的情况,你需要回答子树中所有雪球的色彩丰富度之和。 ### 输入格式 第一行包含两个整数 $N$ 和查询次数 $Q$。 接下来的 $N-1$ 行,每行包含两个空格分隔的整数 $a$ 和 $b$,表示连接雪球 $a$ 和雪球 $b$ 的分支。 最后的 $Q$ 行中,每行包含一个查询。查询的形式有两种: 类型为 $1$ 的查询:表示小齐在雪球 $x$ 上涂颜色 $c$,将其子树中的所有雪球涂上相同的颜色。 类型为 $2$ 的查询:表示查询雪球 $x$ 的子树中所有雪球的色彩丰富度之和。 ### 输出格式 对于每个类型为 $2$ 的查询,输出相应子树中所有雪球的色彩丰富度之和。 ### 样例输入 ``` 5 18 1 2 1 3 3 4 3 5 1 4 1 2 1 2 2 2 3 2 4 2 5 1 5 1 2 1 2 2 2 3 2 4 2 5 1 1 1 2 1 2 2 2 3 2 4 2 5 ``` ### 样例输出 ``` 1 0 1 1 0 2 0 2 1 1 5 1 3 1 1 ``` ### 评测数据规模 $1 \leq Q \leq 10^5$,$1 \leq a, b \leq N$。
查看答案
赣ICP备20007335号-2