【发布时间】:2019-06-16 14:58:39
【问题描述】:
我们有一个包含 N 个节点和 N-1 个双向边的图(每条边都有一些权重 w)。 现在我们必须回答 q 个查询。每个查询给出两个节点 u 和 v 以及任意边 x 处的最大允许成本。如果从 u 到 v 的路径之间所有边的单个边权值小于或等于 x,那么我们打印 Yes 否则我们打印 No。
约束如下:
1 ≤ N,q ≤ 10^6
1 ≤ w,x ≤ 10^9
我尝试了蛮力解决方案,但它提供了 TLE。我知道我必须做一些预处理,但无法克服它。
我在这里发现了一个类似的问题,但没有人明确解决这部分问题。
Maximum edge weight from one node A to node B.
您可以访问该链接以更好地解释问题。
【问题讨论】:
-
你可以用 Dijkstra 算法解决这个问题,因为每个节点最多有一个边,这将导致 O(n) 算法在这里.在执行 Dijkstra 算法时,您可以同时“优化”图形,以便在第一个查询中完成的工作可以在第二个查询中被利用。
-
请在答案中解释该优化。我太天真了,无法理解,因为我的知识仅限于标准 Dijkstra 算法。
-
这是标准Dijkstra算法。
-
我不明白如何优化图表以在进一步查询中利用。请至少提供伪代码或一些解释。
-
我投票决定将此问题作为题外话结束,因为这是一个关于计算机科学而非编程的问题。
标签: algorithm graph-theory undirected-graph