#P14486. [集训队互测 2018] 北校门外的未来

    ID: 14421 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 9 上传者: 标签>2018集训队互测Kruskal 重构树动态树 LCT

[集训队互测 2018] 北校门外的未来

Description

对于一棵树 T=(V,E)T=(V,E)VV 中每个点有一个互不相同的正整数标号。我们用点 ii 表示编号为 ii 的点。

定义这棵树的谷图G(T)=(V,E)G(T)=(V,E')G(T)G(T) 是无向简单图。存在边 (u,v)E(u,v)\in E' 当且仅当在 TT 中,不存在一个异于 u,vu,v 的点 xx 满足 xx 在从 uuvv 的简单路径上且其编号大于 min(u,v)\min(u,v)

有一棵树 TT,初始时只有一个点,编号为 11,接下来有 qq 次操作,操作有以下两种:

  • 1 u v\texttt{1 u v} 表示加入一个编号为 vv 的节点并与当前编号为 uu 的节点相连(保证任何时刻不会有两个编号相同的节点);
  • 2 u v\texttt{2 u v} 表示查询 G(T)G(T) 中点 uuvv 的最短路(每条边长度均为 11)。

请你回答所有查询。

Input Format

第一行两个整数 n,qn, q,表示编号的最大可能值及询问个数。

接下来 qq 行每行三个整数 op u v\texttt{op u v},以题目描述中的格式描述一次操作。

Output Format

依次对于每一个 2\texttt{2} 类型的操作,输出一行一个整数表示其对应的答案。

7 10
1 1 2
1 2 3
1 3 5
1 5 6
2 1 6
1 1 4
2 1 6
1 1 7
2 1 6
2 3 6
4
3
2
2
10 20
1 1 8
1 8 5
1 5 10
1 8 7
2 7 1
1 7 4
2 7 5
1 7 6
2 7 6
1 6 9
2 4 1
1 9 2
2 8 1
1 9 3
2 3 10
2 6 8
2 4 8
2 3 8
2 3 9
2 8 1
2
2
1
3
1
2
2
2
2
1
1
10 20
1 1 7
1 7 6
1 1 2
1 6 4
1 2 3
1 3 5
1 5 9
1 9 8
1 8 10
2 7 10
2 8 3
2 9 5
2 1 7
2 2 1
2 9 9
2 2 7
2 4 3
2 5 4
2 9 2
2 1 1
2
3
1
1
1
0
1
3
3
2
0

Hint

样例 1 解释

最终的树 TTG(T)G(T) 如下:

:::align{center} :::

第一次询问的路径:$1 \rightarrow 2 \rightarrow 3 \rightarrow 5 \rightarrow 6$;

第二次询问的路径:14561 \rightarrow 4 \rightarrow 5 \rightarrow 6

第三次询问的路径:1761 \rightarrow 7 \rightarrow 6

第四次询问的路径:3563 \rightarrow 5 \rightarrow 6

数据范围与提示

对于所有数据,1n105,1q5×1051\le n\le 10^5,1\le q\le 5\times 10^5

每个子任务详细的数据限制及约定如下(留空表示和上述所有数据的约定相同):

子任务编号 分数 nn qq 性质
11 66 100\le 100 200\le 200
22 1010 5000\le 5000 10000\le 10000 ^
33 1212 ^
44 1515 ^ 一、二
55 1212
66 1010 2×105\le 2 \times 10^5 一、三
77 ^
88
99 1515 ^

性质一:所有 1\texttt{1} 操作(修改)在所有 2\texttt{2} 操作(询问)之前。

性质二:任何时刻保证树是一条链。

性质三:最终形成的树在所有 nn 个点的有标号无根树中均匀随机,随机数生成器使用梅森旋转算法

注意样例 3 满足性质一、二。