CF825G Tree Queries

题目描述

给定一棵包含 $n$ 个顶点的树(顶点编号为 $1$ 到 $n$),初始时所有顶点都是白色。你需要处理 $q$ 个操作,操作有两种类型: 1. $1$ $x$ — 将顶点 $x$ 的颜色变为黑色。保证第一个操作必定为该类型。 2. $2$ $x$ — 对于顶点 $x$,找到某条从 $x$ 到某个黑色顶点的简单路径上编号最小的顶点 $y$(简单路径指路径上每个顶点不重复出现)。 对于每个类型为 $2$ 的操作,输出答案。 注意:这里的查询输入方式经过了修改。

输入格式

第一行包含两个整数 $n$ 和 $q$($3\le n, q\le 10^6$)。 接下来的 $n-1$ 行,每行两个整数 $x_i$ 和 $y_i$($1\le x_i, y_i\le n$),表示在顶点 $x_i$ 与 $y_i$ 之间有一条无向边。这些边保证构成一棵树。 接下来的 $q$ 行,每行两个整数 $t_i$ 和 $z_i$,其中 $t_i$ 表示第 $i$ 次操作的类型,$z_i$ 用于恢复该操作中的顶点 $x_i$,具体方式如下:你需要记录上一次类型为 $2$ 的操作的答案(记为 $last$,初始 $last=0$),然后 $x_i=(z_i+last)\bmod n+1$。 保证第一个操作是类型 $1$,且至少存在一个类型为 $2$ 的操作。

输出格式

对每个类型为 $2$ 的操作,输出其答案。

说明/提示

由 ChatGPT 5 翻译