摘要:
总的来说是深度遍历。以根为节点建立并查集。比如说求p,v的lca。当访问到p的时候检查v是否已经访问过。如果访问过,那么他们的lca就是v现在所在的并查集里面的元素。如果没有访问到。那么等到v访问到的时候可以操作一下。 充分利用了递归这个操作,所以不必要保存以前的东西,自然而然的就将u里面的所有的子节点子孙节点都和并到一块去了。 这个想了比较长的时间。 这个是伪代码 LCA(u) {Make-Set(u)ancestor[Find-Set(u)]=u对于u的每一个孩子v {LCA(v)Union(u)ancestor[Find-Set(u)]=u}checked[u]=true对于每个(u,. 阅读全文
posted @ 2011-06-02 16:33
gui__li
阅读(289)
评论(0)
推荐(0)

浙公网安备 33010602011771号