CF1137F.Matches Are Not a Child's Play

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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,,n1, 2, \ldots, n . Also every vertex vv has some integer priority pvp_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 nn vertices and every vertex in it has a priority pv=vp_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 qq queries, each of them is one of three following types:

  • "up vv ", assign the vertex vv priority 1+max{p1,p2,,pn}1 + \max\{p_1, p_2, \ldots, p_n\} ;
  • "when vv ", find the step at which the vertex vv will burn out, if the tree would be set on fire now;
  • "compare vv uu ", find out which of the vertices vv and uu 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.

输入格式

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

The ii -th of the following n1n - 1 lines contains two integers viv_i , uiu_i ( 1vi,uin1 \le v_i, u_i \le n ), denoting the endpoints of the ii -th edge.

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

  • "up vv " ( 1vn1 \le v \le n ) — change the priority of vertex vv ;
  • "when vv " ( 1vn1 \le v \le n ) — determine the step at which the vertex vv will burn out;
  • "compare vv uu " ( 1v,un1 \le v, u \le n , vuv \ne u ) — determine which of vertices vv and uu will burn out earlier in the current tree.

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

输出格式

For every query of type "when" print one integer in range from 11 to nn — the step at which the vertex vv will burn out.

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

输入输出样例

  • 输入#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
    

    输出#1

    4
    1
    3
    2
    5
    2
    4
    
  • 输入#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
    

    输出#2

    2
    4
    3
    5
    

说明/提示

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

In particular, the vertices of the tree will burn out in the following order: [2,4,3,1,5][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][2, 4, 3, 5, 1] .

首页