#P7690. [2019年杭电多校]Colored Tree

    ID: 7731 传统题 7000ms 1024MiB 尝试: 6 已通过: 1 难度: 8 上传者: 标签>CF2400数据结构LCA树链剖分线段树树论LCT

[2019年杭电多校]Colored Tree

Colored Tree

题目描述

给定一棵以 11 号点为根的树,树上每个点都有一个颜色。

对于一个点 uu,称以 uu 为根的子树中出现过的不同颜色数量为 DuD_u

现在需要支持两种操作:

  • 1 u c:将点 uu 的颜色修改为 cc
  • 2 k:询问当前有多少个点 uu 满足 Du=kD_u=k

对于每个 2 k 操作,输出答案。

输入格式

第一行包含一个整数 TT,表示测试数据组数。

对于每组测试数据:

第一行包含两个整数 N,QN,Q,分别表示树的点数和操作数。

接下来 N1N-1 行,每行两个整数 u,vu,v,表示树上有一条无向边连接 uuvv

接下来一行包含 NN 个整数,第 ii 个整数表示点 ii 的初始颜色。

接下来 QQ 行,每行表示一个操作,格式为以下两种之一:

  • 1 u c:将点 uu 的颜色修改为 cc
  • 2 k:询问当前有多少个点的子树中恰好有 kk 种不同颜色。

输出格式

对于每个 2 k 操作,输出一行一个整数,表示答案。

数据范围

对于本题数据,满足:

  • 1T51 \le T \le 5
  • 1N,Q1051 \le N,Q \le 10^5
  • 1u,vN1 \le u,v \le N
  • 输入图保证是一棵树;
  • 根节点固定为 11
  • 颜色编号为正整数,且不超过 10510^5
  • 对于操作 1 u c1uN1 \le u \le N1c1051 \le c \le 10^5
  • 对于操作 2 k1k1001 \le k \le 100

样例输入

1
3 2
1 2
2 3
1 2 3
1 2 1
2 2

样例输出

2

样例说明

初始时,点 11 的子树颜色集合为 {1,2,3}\{1,2,3\},点 22 的子树颜色集合为 {2,3}\{2,3\},点 33 的子树颜色集合为 {3}\{3\}

执行 1 2 1 后,三点颜色变为 1,1,31,1,3

此时点 11 的子树颜色集合为 {1,3}\{1,3\},点 22 的子树颜色集合为 {1,3}\{1,3\},点 33 的子树颜色集合为 {3}\{3\}

所以恰好含有 22 种不同颜色的子树有 22 个。