【发布时间】:2015-11-23 08:54:57
【问题描述】:
这个问题可以在每个查询 O(n + m) 中轻松解决,但是这是否可以通过比 O(n²) 更好的预处理来以更好的复杂性回答此类查询?
在树中,它可以通过使用预购和有序来轻松完成。我在 DAG 中尝试过类似的方法,但没有任何意义。
我也尝试将这个问题改成 LCA in DAG 问题,但是在 DAG 中找到 LCA 并不能足够快地解决。
为了精确的约束让我们说:
n - 顶点数,最多 10^5
m - 边数,最多 10^5
q - 查询数,最多 10^5
【问题讨论】:
-
即使在 DAG 中,也可能存在
O(n^2)边(除非考虑到图形是稀疏的),因此您实际上是在寻找次线性时间......而This question can be easily solved in O(n)不,出于同样的原因。 -
我的错。我的意思是 O(n + m)。
-
查询可以离线回答吗?
-
是的,欢迎离线解决方案。
标签: algorithm data-structures graph directed-acyclic-graphs ancestor