树上点到路径的距离, 以及树上路径到路径的距离

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树上点到路径的距离, 以及树上路径到路径的距离相关的知识,希望对你有一定的参考价值。

  在学习平面几何的时候, 我们介绍了点, 直线和圆, 随后就研究了它们之间的一些数量关系.

  现在的载体变成了树. 对于一棵树, 我们定义了点和路径, 那么不妨可以研究一下点与点的距离, 点到路径的距离, 路径到路径的距离.

 

点与点的距离

  $dist(x, y) = d[x] + d[y] - d[LCA(x, y)]$ .

    技术分享

 

点到路径的距离

  定义 $dist(x, path(a, b)) = \\min_{d \\in path(a, b)} dist(x, d)$ .

  $dist(x, path(a, b)) = dist(x, a) + dist(x, b) - dist(a, b)$ .

    技术分享

 

路径到路径的距离

  定义 $dist(path(a, b), path(c, d)) = \\min_{x \\in path(a, b), y \\in path(c, d)} dist(x, y)$ , 不妨记 $p = LCA(a, b), q = LCA(c, d)$ .

  当 $path(a, b)$ 与 $path(c, d)$ 相交时, $dist(path(a, b), path(c, d)) = 0$ .

  当 $path(a, b)$ 与 $path(c, d)$ 不相交, 且 $p$ 在 $q$ 子树内时, 答案为 $dist(p, LCA(a, b))$ .

      技术分享

  当 $path(a, b)$ 与 $path(c, d)$ 不相交, 且 $q$ 在 $p$ 子树内时, 答案为 $dist(q, LCA(c, d))$ .

  否则, 答案为 $dist(p, q)$ .

    技术分享

  综上, 也可以表示为 $dist(path(a, b), path(c, d)) = \\left\\{ \\begin{aligned}  & 0 & , path(a, b) \\cap path(c, d) \\ne \\emptyset \\\\ & \\min(dist(p, LCA(c, d)), dist(q, LCA(a, b))) & , path(a, b) \\cap path(c, d) \\ne \\emptyset \\end{aligned} \\right.$ 

以上是关于树上点到路径的距离, 以及树上路径到路径的距离的主要内容,如果未能解决你的问题,请参考以下文章

天天和树

UOJ #590. 天天和树

Codefroces Gym 100781A(树上最长路径)

BZOJ.1468.Tree(点分治)

Count on a tree(树上路径第K小)

loj6145 Easy