给出一颗无向有边权树, 询问若干个(u,v)对的距离。
题目链接 HDU 2586
题目大意
给你一棵有边权树,求两点之间的最短距离。
两点的最短边其实就是两点之间过LCA的那条边,因此两点间的距离就是这条边的
长度。
如图,求K与F的距离。
我们用dist[x]保存 x到根节点A的距离。
则K与F的距离等于dist[K]+dist[F]-2*dist[B] (B为K与F的LCA).
LCA模板详解链接
LCA-RMQ-ST算法
|
|
Tarjan离线算法
|
|
倍增算法(在线)
|
|
给出一颗无向有边权树, 询问若干个(u,v)对的距离。
题目链接 HDU 2586
给你一棵有边权树,求两点之间的最短距离。
两点的最短边其实就是两点之间过LCA的那条边,因此两点间的距离就是这条边的
长度。
如图,求K与F的距离。
我们用dist[x]保存 x到根节点A的距离。
则K与F的距离等于dist[K]+dist[F]-2*dist[B] (B为K与F的LCA).
|
|
|
|
|
|
微信打赏
支付宝打赏