编程题
### 问题描述 小然在一次探险中,发现了一个神秘的森林。在这片森林里,有 $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$。 每个测试用例至少有一个第二种操作。
查看答案
赣ICP备20007335号-2