CF455C Civilization

题目描述

给出一个由 $n$ 个点,$m$ 条边组成的森林,有 $q$ 组询问。 1. 给出点 $x$,输出点 $x$ 所在的树的直径。 2. 给出点 $x,y$,如果 $x,y$ 在同一棵树中则忽略此操作。否则选择任意两点 $u,v$,使得 $u$ 跟 $x$ 在同一棵树中且 $v$ 跟 $y$ 在同一棵树中。将 $u,v$ 之间连一条边,使得连边后的到的新树的直径最小。

输入格式

第一行三个整数 $n,m,q$,分别表示 点的个数,边的个数和询问个数。 接下来 $m$ 行,每行两个整数 $x,y$,表示有一条连接点 $x,y$ 的边。 接下来 $q$ 行,每行表示一条操作。 操作 $1$:`1 x` 操作 $2$:`2 x y`

输出格式

输出行数为操作 $1$ 的个数。 每行一个整数表示对应的操作 $1$ 的答案。

说明/提示

$1 \le m < n \le 3\cdot 10^5$ $1 \le q \le 3 \cdot 10^5$ 感谢 @[_Wolverine](https://www.luogu.com.cn/user/120362) 提供的翻译