【问题标题】:Maximum distance of two tree nodes with same color相同颜色的两个树节点的最大距离
【发布时间】:2016-07-14 00:06:24
【问题描述】:

给定一棵具有N 顶点的树,其中每条边的权重为1。节点用C 颜色着色。对于每种颜色,我们希望找到该颜色的两个节点之间的最大最短距离。

我可以建立一个稀疏表,然后在O(log n) 中找到两个节点的 LCA。然后检查所有相同颜色的对。这给出了O(n^2 log n)。有没有可能做得比这更好?

【问题讨论】:

    标签: algorithm tree shortest-path graph-coloring lowest-common-ancestor


    【解决方案1】:

    您可以适当地处理边缘并从每个节点开始递归遍历,就好像它是根一样。由于树有 N 个节点,N 次遍历会给你 O(N2)。边的 juggling 也应该花费 O(n) 时间,因为树中有 (n-1) 条边。如果您保留具有 C 行和 C 列的矩阵 M 并在每次遍历时对其进行更新,那么您可以在 O(N2) 总时间内完成所需的操作空间复杂度。

    基本上,您所做的将在从节点 U 开始的遍历中更新 M 的 cuth 行,颜色为 cu当您在距离 d 处以颜色 cv 到达节点 V 时,采用以下方式。

    M[cu][cv] = max(M[cu][cv], d)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多