#P721. 树的链接

树的链接

题目描述

给定一张 nn 个点,若干条带权无向边的图。初始时,没有任何一条边存在。

​你需要按序完成给定的 qq 个操作,每个操作为以下两种操作类型之一:

  • x y 表示询问操作,询问点 xx 与 点yy 之间的最短路径长度;如果两点之间不存在任何路径,则输出-1。

  • x y w 表示链接操作,即在点 xx 与 点yy 之间新建一条长度为 ww 的边。

输入格式

输入的第一行包含两个正整数 n,qn, q。

接下来 qq 行,每行输入两个或者三个正整数,形如 xx yy 或 xx yy ww,表示一个操作,相邻的两个数之间用一个空格隔开。

输出格式

对于每个询问操作,你需要输出一行,一个整数,表示这次询问的答案。

4 7
1 3
1 3 100
2 3 200
1 3
1 2
2 3
1 4
-1
100
300
200
-1

样例解释 1

操作2、3为链接操作,操作1、4、5、6、7为询问操作。 其中1、7操作在询问时没有连通,故答案为 -1

数据范围

  • 对于 30%30\% 的数据, 1≤n,q≤301 \leq n, q \leq 30。

  • 对于 60%60\% 的数据,1≤n,q≤3,0001 \leq n, q \leq 3,000。

  • 对于 100%100\% 的数据, 保证 1≤n,q≤300,0001 \leq n,q \leq 300,000 , 1≤w≤1031 \leq w \leq 10^3。

数据保证,在任何链接操作之前,所链接的两个点 xx 与 yy 之间不存在任何路径。