Description
给定一棵N(1<=N<=100000)个结点的带权树,每条边都有一个权值(为正整数,小于等于1001)。定义dis(u,v)为u,v两点间的最短路径长度,路径的长度定义为路径上所有边的权和。再给定一个K(1<=K<=10^9),如果对于不同的两个结点u,v,如果满足dist(u,v)<=K,则称(u,v)为合法点对。求合法点对个数。
Input
输入文件的第一行包含两个整数n和k,接下来n-1行每行都有三个整数u,v,l, 表示结点u和结点v之间有一条长l的边。
Output
输出文件只有一行为合法点对的个数。

这是一篇关于使用点分治算法解决树中点对最短路径问题的博客。给定一棵有N个节点、权值不超过1001的树,以及一个K值,要求找出所有距离不超过K的合法点对数量。通过寻找树的重心并递归处理子树,可以实现O(N log N)的时间复杂度。样例输入和输出展示了数据范围和具体计算过程。
最低0.47元/天 解锁文章
813

被折叠的 条评论
为什么被折叠?



