Tarjan离线求LCA
Posted A_Cherry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tarjan离线求LCA相关的知识,希望对你有一定的参考价值。
Tarjan离线算法,相当于就是把整个树给DFS了一遍。DFS的同时,处理关于当前节点的询问。复杂度就是:O(n + q),n为总结点数,q为询问结点对数。
具体是怎么一回事呢。
看一下这个画个图理解一下就好了。
//parent为并查集,FIND为并查集的查找操作 //QUERY为询问结点对集合 //TREE为基图有根树 Tarjan(u) visit[u] = true for each (u, v) in QUERY if visit[v] ans(u, v) = FIND(v) for each (u, v) in TREE if !visit[v] Tarjan(v) parent[v] = u
是的,感觉看完这个之后什么都记起来了。
以上是关于Tarjan离线求LCA的主要内容,如果未能解决你的问题,请参考以下文章
POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)LCA