CF_Edu.#51_Div.2_1051F_The Shortest Statement

F. The Shortest Statement

time limit per test
4 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given a weighed undirected connected graph, consisting of n
vertices and m

edges.

You should answer q
queries, the i-th query is to find the shortest distance between vertices ui and vi

.
Input

The first line contains two integers n
and m (1≤n,m≤105,m−n≤20)

— the number of vertices and edges in the graph.

Next m
lines contain the edges: the i-th edge is a triple of integers vi,ui,di (1≤ui,vi≤n,1≤di≤109,ui≠vi). This triple means that there is an edge between vertices ui and vi of weight di

. It is guaranteed that graph contains no self-loops and multiple edges.

The next line contains a single integer q (1≤q≤105)

— the number of queries.

Each of the next q
lines contains two integers ui and vi (1≤ui,vi≤n)

— descriptions of the queries.

Pay attention to the restriction m−n ≤ 20

.
Output

Print q

lines.

The i
-th line should contain the answer to the i-th query — the shortest distance between vertices ui and vi

.
Examples
Input
Copy

3 3
1 2 3
2 3 1
3 1 5
3
1 2
1 3
2 3

Output
Copy

3
4
1

Input
Copy

8 13
1 2 4
2 3 6
3 4 1
4 5 12
5 6 3
6 7 8
7 8 7
1 4 1
1 8 3
2 6 9
2 7 1
4 6 3
6 8 2
8
1 5
1 7
2 3
2 8
3 7
3 4
6 8
7 8

Output
Copy

7
5
6
7
7
1
2
7

猜你喜欢

转载自www.cnblogs.com/hkpls/p/9919577.html