#P7735. [NOI2021] 轻重边

[NOI2021] 轻重边

[NOI2021] 轻重边

  • 时间限制:3 秒
  • 内存限制:512 MiB

题目描述

给定一棵含有 nn 个顶点的树,每条边可能是轻边或重边。在所有操作开始前,树上的全部边都是轻边。你需要依次执行以下两类操作:

  1. 给定两个不同的顶点 a,ba,b。先对 aabb 路径上的每个顶点 xx,把所有与 xx 相连的边变为轻边;然后把 aabb 路径所包含的全部边变为重边。
  2. 给定两个不同的顶点 a,ba,b,求当前 aabb 路径上的重边数量。

输入格式

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

对于每组数据,第一行包含两个整数 n,mn,m,分别表示顶点数和操作数。

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

接下来 mm 行,每行包含三个整数 op,a,bop,a,bop=1op=1 表示第一类操作,op=2op=2 表示第二类操作。保证 aba\ne b

输出格式

对于每个第二类操作输出一行一个整数,表示询问路径上的重边数量。

样例输入 1

1
7 7
1 2
1 3
3 4
3 5
3 6
6 7
1 1 7
2 1 4
2 2 7
1 1 5
2 2 7
1 2 1
2 1 7

样例输出 1

1
3
2
1

数据范围

对于所有数据,1T31\le T\le31n,m1051\le n,m\le10^51u,v,a,bn1\le u,v,a,b\le n

子任务编号 分值 特殊限制
1 20 每组数据均满足 n20n\le20m20m\le20
2 25 每组数据均满足 n2000n\le2000m2000m\le2000
3 20 每组数据中的树均为一条链
4 35 无特殊限制