A101179.村庄问路

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

村庄里有 nn 座房子,并且有一些双向道路连接它们。每天人们总爱问这样的问题:

“如果我想从房子 AA 去到房子 BB,距离是多少?”

通常这个问题并不容易快速回答。但幸运的是,这个村庄的道路修建方式非常特殊:任意两座房子之间都存在且仅存在一条简单路径(简单路径指路径上不会重复经过同一个房子)。

你的任务是回答所有人的询问,即求出每次询问中从房子 AA 到房子 BB 的最短路长度(由于路径唯一,因此答案唯一)。

输入格式

第一行是一个整数 TTT10T \le 10),表示测试数据组数。

对于每组测试数据:

  • 第一行包含两个整数 nnmm
    其中 2n400002 \le n \le 400001m2001 \le m \le 200
    分别表示房子的数量和询问的数量。

  • 接下来 n1n-1 行,每行包含三个整数 i,j,ki, j, k,表示有一条长度为 kk 的双向道路连接房子 ii 和房子 jj
    其中 1i,jn1 \le i,j \le n0<k400000 < k \le 40000

  • 接下来 mm 行,每行包含两个互不相同的整数 i,ji, j,表示一次询问:求房子 ii 到房子 jj 的距离。

输出格式

对于每组测试数据,输出 mm 行,每行输出对应询问的答案。

每组测试数据输出完毕后,额外输出一个空行。

输入输出样例

  • 输入#1

    2
    3 2
    1 2 10
    3 1 15
    1 2
    2 3
    
    2 2
    1 2 100
    1 2
    2 1

    输出#1

    10
    25
    
    100
    100
首页