Xenia and Tree
题意翻译
给定一棵 $n$ 个节点的树,初始时 1 号节点为红色,其余为蓝色。
要求支持如下操作:
1. 将一个节点变为红色。
2. 询问节点 $u$ 到最近红色节点的距离。
共 $q$ 次操作。
$$
1 \le n, q \le 10 ^5
$$
题目描述
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.
输入输出格式
输入格式
The first line contains two integers $ n $ and $ m $ $ (2<=n<=10^{5},1<=m<=10^{5}) $ — 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.
输出格式
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