CF342E.Xenia and Tree

提高+/省选-

通过率:0%

时间限制:5.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Xenia the programmer has a tree consisting of n nodes. We will consider the tree nodes indexed from 1 to n. We will also consider the first node to be initially painted red, and the other nodes — to be painted blue.

The distance between two tree nodes v and u is the number of edges in the shortest path between v and u.

Xenia needs to learn how to quickly execute queries of two types:

  1. paint a specified blue node in red;
  2. calculate which red node is the closest to the given one and print the shortest distance to the closest red node.

Your task is to write a program which will execute the described queries.

程序员 Xenia 有一棵包含 nn 个节点的树。我们将树的节点编号为 11 到 nn。初始时,第 11 号节点被涂成红色,其余所有节点均被涂成蓝色。

树中两个节点 vv 和 uu 之间的距离定义为连接 vv 与 uu 的最短路径所含边的数量。

Xenia 需要学习如何快速处理以下两类查询:

  1. 将指定的一个蓝色节点涂成红色;
  2. 计算距离给定节点最近的红色节点,并输出到该最近红色节点的最短距离。

你的任务是编写一个程序来执行上述查询。

输入格式

The first line contains two integers n and m (2 ≤ n ≤ 105, 1 ≤ m ≤ 105) — the number of nodes in the tree and the number of queries. Next n - 1 lines contain the tree edges, the i-th line contains a pair of integers a__i, b__i (1 ≤ a__i, b__i ≤ n, a__i ≠ b__i) — an edge of the tree.

Next m lines contain queries. Each query is specified as a pair of integers t__i, v__i (1 ≤ t__i ≤ 2, 1 ≤ v__i ≤ n). If t__i = 1, then as a reply to the query we need to paint a blue node v__i in red. If t__i = 2, then we should reply to the query by printing the shortest distance from some red node to node v__i.

It is guaranteed that the given graph is a tree and that all queries are correct.

第一行包含两个整数 nn 和 mm(2≤n≤1052 \leq n \leq 10^5,1≤m≤1051 \leq m \leq 10^5)—— 分别表示树中节点的数量和查询的数量。接下来的 n−1n-1 行描述树的边,其中第 ii 行包含一对整数 ai, bia_i,\,b_i(1≤ai, bi≤n1 \leq a_i,\,b_i \leq n,ai≠bia_i \neq b_i)—— 表示树中的一条边。

接下来的 mm 行包含查询。每个查询由一对整数 ti, vit_i,\,v_i(1≤ti≤21 \leq t_i \leq 2,1≤vi≤n1 \leq v_i \leq n)指定。若 ti=1t_i = 1,则需将蓝色节点 viv_i 染为红色;若 ti=2t_i = 2,则需回答从任意一个红色节点到节点 viv_i 的最短距离。

保证所给图是一棵树,且所有查询均合法。

输出格式

For each second type query print the reply in a single line.

对于每个第二类查询,请在单独一行中输出回答。

输入输出样例

  • 输入#1

    5 4
    1 2
    2 3
    2 4
    4 5
    2 1
    2 5
    1 2
    2 5

    输出#1

    0
    3
    2

输入解题思路,AI测评打分。不知道怎么写?

首页