Problem2970--小岛 [islet](2)

2970: 小岛 [islet](2)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 0  Solved: 0
[Status] [Submit] [Creator:]

Description

西伯利亚北部的寒地,坐落着由N个小岛组成的岛屿群,我们把这些小岛依次编号为1到N。
起初,岛屿之间没有人和航线,后来随着交通的发展,逐渐出现了一些联通两座小岛的航线。例如增加一条在u号小岛与v号小岛之间的航线,这条航线的用时为e。那么沿着这条航线,u号小岛上的人可以前往v号小岛,同样的v号小岛上的人也可以前往u号小岛,其中沿着这一条航线花费的时间为e。
同时,随着旅游业的发展,越来越多的人前来游玩。那么两个小岛之间的最短路径是多少便成为了饱受关注的话题。

Input

输入文件islt.in共M+1行。
第一行有两个整数N和M,分别表示小岛的数和总操作数。
接下来的M行,每行表示一个操作,格式如下:
●0 s t:表示询问从s号小岛到t号小岛的最短用时(1≤s≤n,1≤t≤n,s≠t)。
●1 u v e:表示新增了一条从u号小岛到v号小岛,用时为e的双向航线(1≤u≤n,1≤v≤n,u≠v,1≤e≤10^5)

Output

输出文件islet.out针对每一次询问,单独输出一行。对于每一组询问来说,如果不存在可行的道路,则输出-1,否则输出最短用时。

Sample Input Copy

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

Sample Output Copy

−1
15
12

HINT

数据规模
对于20%的数据,N ≤ 5且M ≤ 30。
对于40%的数据,N ≤ 20且M ≤ 200。
对于60%的数据,N ≤ 80且M ≤ 500。
对于80%的数据,N ≤ 100且M ≤ 2500。
对于100%的数据,N ≤ 100且M ≤ 5000。

Source/Category