Codeforces Round 545 (Div. 1)
F
Matches Are Not a Child's Play
Codeforces
3400
原题
← E→
翻译中…

Lena is playing with matches. The natural question arising in the head of any child playing with matches is whether it's possible to set a tree on fire with a matches, or not.

翻译中…

Let's say, that the tree is a connected graph without cycles and the vertices are labeled with integers $1, 2, \ldots, n$. Also every vertex $v$ has some integer priority $p_v$ associated with it. All priorities are distinct.

翻译中…

It turns out, that if you set a tree on fire, it will burn to nothing. However, this process doesn't happen instantly. At the beginning, burns out the leaf (a vertex is called to be a leaf if it has only one adjacent vertex) of the tree of the minimum priority. Then burns out the leaf of the minimal priority of the remaining tree, and so on. This way, the vertices turn into the leaves and burn out until only one vertex remains. Then this vertex burns out as well.

翻译中…

Lena has prepared a tree of $n$ vertices and every vertex in it has a priority $p_v = v$. Lena is very curious about burning out this tree. However, she understands, that if she will burn the tree now, then it will disappear completely. Lena is a kind girl and she will feel bad for the burned tree, so she wants to study the process of burning the tree only in her mind. Lena wants to process $q$ queries, each of them is one of three following types:

翻译中…
  • "up $v$", assign the vertex $v$ priority $1 + \max\{p_1, p_2, \ldots, p_n\}$;
  • "when $v$", find the step at which the vertex $v$ will burn out, if the tree would be set on fire now;
  • "compare $v$ $u$", find out which of the vertices $v$ and $u$ will burn out first, if the tree would be set on fire now.
翻译中…

Notice, that if all priorities would be distinct, then after the "up" query they will stay distinct as well. Initially all priorities are distinct, hence during any (purely hypothetical of course) burning of the tree, all leafs would have distinct priorities.

翻译中…

Input

翻译中…

The first line contains two integers $n$ and $q$ ($2 \le n \le 200\,000$, $1 \le q \le 200\,000$) — the number of vertices in the tree and the number of queries.

翻译中…

The $i$-th of the following $n - 1$ lines contains two integers $v_i$, $u_i$ ($1 \le v_i, u_i \le n$), denoting the endpoints of the $i$-th edge.

翻译中…

Each of the remaining $q$ lines contains a query of one of the following three types:

翻译中…
  • "up $v$" ($1 \le v \le n$) — change the priority of vertex $v$;
  • "when $v$" ($1 \le v \le n$) — determine the step at which the vertex $v$ will burn out;
  • "compare $v$ $u$" ($1 \le v, u \le n$, $v \ne u$) — determine which of vertices $v$ and $u$ will burn out earlier in the current tree.
翻译中…

It's guaranteed, that there is at least one query of type "when" or "compare".

翻译中…

Output

翻译中…

For every query of type "when" print one integer in range from $1$ to $n$ — the step at which the vertex $v$ will burn out.

翻译中…

For every query of type "compare" print either $v$ or $u$, depending on which one will burn out earlier.

翻译中…

Note

翻译中…

In the first example, the process of burning of the tree is illustrated on the following picture:

翻译中…

image

翻译中…

In particular, the vertices of the tree will burn out in the following order: $[2, 4, 3, 1, 5]$.

翻译中…

In the second example, after applying the "up" operation, the order of vertices will change to: $[2, 4, 3, 5, 1]$.

翻译中…

样例

Input #1
5 7
1 5
1 2
1 3
4 3
when 1
when 2
when 3
when 4
when 5
compare 2 3
compare 3 4
Output #1
4
1
3
2
5
2
4
InputCopy OutputCopy
Input #2
5 5
1 5
1 2
1 3
4 3
up 1
compare 2 4
compare 4 3
compare 3 1
compare 1 5
Output #2
2
4
3
5
InputCopy OutputCopy
题目信息
题号
1137F
时间限制
4 s
内存限制
512 MB
标签
数据结构
树

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。