编程题
### 问题描述
小然在一次探险中,发现了一个神秘的森林。在这片森林里,有 $N$ 颗神秘的树,每棵树都隐藏着一个二进制密码($0$ 或 $1$)。初始时,每棵树的密码都是 $0$。
我们可以将一组树的密码进行位与运算,得到这组树的密码集合的位与值。
森林中的每一条边(连接两棵树的路径)都被赋予了一个特殊的属性:如果移除这条边,那么得到的两片森林的所有树的密码位与值相同,我们就称这条边为“神秘边”。
小然希望找出所有的神秘边,为此,他需要进行 $Q$ 次操作,每次操作有两种可能:
1. 给定一个整数 $u$,如果第 $u$ 颗树是一棵叶子树(没有子树的树),那么他将这棵树的密码改为 $1$;否则,他将这棵树的密码改为其所有子树的密码的位与值。
2. 寻找并统计当前所有的神秘边的数量。
请你帮助小然完成这些操作。
### 输入格式
第一行包含一个整数 $T$,表示测试用例的数量。
每个测试用例的格式如下:
- 第一行包含一个整数 $N$,表示森林中树的数量。
- 接下来的 $N-1$ 行每行包含两个空格分隔的整数 $u_i$ 和 $v_i$,表示第 $u_i$ 颗树和第 $v_i$ 颗树之间有一条边。
- 接下来的一行包含一个整数 $Q$,表示操作的数量。
- 接下来的 $Q$ 行,每行描述一个操作,格式如上文所述。
### 输出格式
对于每个测试用例,对于每一个第二种操作,输出一行,表示当前神秘边的数量。
### 样例输入
```text
1
5
1 2
1 3
2 4
2 5
5
1 1
1 3
2
1 5
2
```
### 样例输出
```text
3
2
```
### 评测数据范围
$1 \leq T \leq 10^4$。
$1 \leq N, Q \leq 3 \times 10^5$。
对于每条边,有 $1 \leq u_i, v_i \leq N$,且 $u_i \neq v_i$。
所有测试用例的 $N$ 和 $Q$ 的总和不超过 $3 \times 10^5$。
每个测试用例至少有一个第二种操作。