#P721. 树的链接

树的链接

题目描述

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

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

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

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

输入格式

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

接下来 qq 行,每行输入两个或者三个正整数,形如 xx yyxx 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\% 的数据, 1n,q301 \leq n, q \leq 30

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

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

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