|
||||||||||
wls 的树Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 411 Accepted Submission(s): 90 Problem Description wls有一棵有根树,其中的点从$1$到$n$标号,其中$1$是树根。每次wls可以执行两种操作中的一个: (1)选定一个点$x$,将以$x$为根的子树变成一条按照编号排序的链,其中编号最大的作为新的子树的根(成为原来$x$的父亲节点的儿子,如果原来$x$没有父亲节点则新的子树的根也没有父亲节点)。 (2)查询两个点之间的最短路径上经过了多少边。 Input 第一行一个整数$t$表示数据组数($t\le10$)。 每组数据第一行一个正整数$n$表示树上的点数($1\le n\le 100000$)。 接下来$n-1$行每行两个$1$到$n$之间的正整数表示一条树边。 接下来一行一个正整数$q$表示询问的个数($1\le q\le 200000$)。 接下来$q$行每行表示一个操作。第一种操作格式为$1\ x$,其中$x$为指定的树根。第二种操作格式为$2\ x\ y$,表示查询从$x$到$y$的路径。 Output 对于每个第二种操作,输出一行一个正整数表示答案。 Sample Input
Sample Output
Source | ||||||||||
|