A91500.Welcome24ever 和公园
提高+/省选-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
现在有一个现成的公园,有 n 个休息点和 m 条双向边连接两个休息点(所有边长度均为 1)。这些点和边构成一片森林(保证不存在环)。
Welcome24ever 是一个强迫症患者,她打算施展魔法来改造公园并即时了解改造情况。她可以进行以下两种操作:
- 对某个休息点 x,查询当前公园中与 x 互相可达的所有休息点构成的连通块中,最长简单路径的长度(即该连通块的直径)。
- 对于两个休息点 x,y,如果当前它们已经处在同一个连通块中,则忽略此次操作;否则:
- 各自从 x 所在连通块与 y 所在连通块中分别任选一个休息点(可以选 x,y 本身)用一条新边连接;
- 该条新边长度为 1;
- 选择的这两个休息点应使得新连通块的最长路径长度尽可能小。
Welcome24ever 一共会进行 q 个操作,请你依次回答所有操作 1 的询问结果(操作 2 只会改变结构,不输出)。
注:
- 所有边长度均为 1。
- 对于一个连通块,如果它的最长路径经过点列 v1,v2,…,vk(相邻两点之间有边),则该连通块的最长路径长度为 k−1。
输入格式
- 第一行,三个正整数 n,m,q。
- 接下来 m 行,每行两个正整数 xi,yi,表示 xi 和 yi 之间有一条双向边。
- 接下来 q 行,每行描述一个操作:
- 若行首为
1,则为操作 1,后跟一个整数 xi; - 若行首为
2,则为操作 2,后跟两个整数 xi,yi。
- 若行首为
保证初始图无环(是一片森林)。
输出格式
对每个操作 1 输出一行一个整数,表示该点所在连通块当前的最长路径长度。
输入输出样例
输入#1
6 0 6 2 1 2 2 3 4 2 5 6 2 3 2 2 5 3 1 1
输出#1
4
说明/提示
数据范围
- 对于 100% 的数据,0≤m<n≤3×105,1≤q≤3×105。