【bzoj4699】树上的最短路(树剖+线段树优化建图)

题意

给你一棵 $n$ 个点 $n-1$ 条边的树,每条边有一个通过时间。此外有 $m$ 个传送条件 $(x_1,y_1,x_2,y_2,c)$,表示从 $x_1$ 到 $x_2$ 的简单路径上的点可以花费 $c$ 单位时间到达 $y_1$ 到 $y_2$ 简单路径上的任意一点。求从一个起点 $k$ 到其余所有点的最短路。

题解1:树剖+线段树优化建图

线段树优化建图大家肯定都会,然后套到树剖上的话,就想象一下 每条重链对应线段树上一段区间 即可,甚至不用为此更改写法。

这里介绍了 $O(n\times log(n))$ 做树剖+线段树优化建图的方法。

然后对线段树上 $n\times log(n)$ 个点做 $dijkstra$ 就完了。

时间复杂度 $O(n\times log(n)\times log(n\times log(n)))$。

题解2:

上一篇:c++设计模式系列----factory模式


下一篇:POJ3417Network(LCA+树上查分||树剖+线段树)