Advertisement

LC A— 距离

阅读量:

距离

给定一棵包含 n 个节点的树,需要对多个查询进行处理,以确定任意两点之间的最短路径长度。

说明如下:

  • 所有边均为无向性质;

  • 节点编号依次为 1,2,…,n;

  • 输入形式如下:
    首行给出两个整数 n 和 m,其中 n 表示节点数量,m 表示查询次数;

    接下来 n−1 行,每行包含三个整数 x,y,k,表示节点 x 与 y 之间有一条边,其长度为 k;

    然后是 m 行,每行包含两个整数 x,y,表示询问节点 x 到 y 的最短距离。

树中所有结点的编号范围为 1 至 n。

输出形式:
共 m 行,每行对应一个查询的结果。

数据范围:
2≤n≤10^4
1≤m≤2×10^4
0
1≤x,y≤n

输入样例1:
2 2
1 2 100
1 2
2 1

输出样例1:
100
100

输入样例2:
3 2
1 2 10
3 1 15
1 2
3 2

输出样例2:
10
25

题解:

由于树结构中任意两点间的路径唯一,因此此处仅采用tarjan算法进行了一次离线计算,后续将补充倍增法的实现代码。

复制代码
    #include <bits/stdc++.h>
    using na

全部评论 (0)

还没有任何评论哟~