lca
John159151
这个作者很懒,什么都没留下…
展开
-
poj1330 LCA离线tarjan算法 复杂度O(n+q)
http://poj.org/problem?id=1330 题意:给出一个森林,求两节点的的lca 解题思路: lca的离线tarjan算法,在dfs时不断将子节点并到父结点的集合中,在搜索另一棵树前,要重置f数组 #include #include #include #include #include #include #include #include #include #inc原创 2014-02-17 22:36:22 · 1292 阅读 · 0 评论 -
poj1330 LCA在线算法 复杂度O(nlogn)
题意:给出一个森林,求两节点的的lca 解题思路: lca的在线RMQ算法, (1)DFS:从树T的根开始,进行深度优先遍历(将树T看成一个无向图),并记录下每次到达的顶点。第一个的结点是root(T),每经过一条边都记录它的端点。由于每条边恰好经过2次,因此一共记录了1+2(n-1)个结点, 用E[1, ... , 2n-1]来表示。 (2)计算R:用R[i]表示E数组中第一个值为i的原创 2014-02-18 02:31:20 · 1100 阅读 · 0 评论 -
hdu2586 LCA应用 求树的任意两节点的距离
http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:给出一棵树,求两节点的的距离 解题思路: 直接BFS超时,所以要使用LCA(离线tarjan算法)。 例如求x,y节点的距离,那么先求出x,y的lca是u节点,那么结果就是dis[x]+dis[y]-2*dis[u]*/ #include #include #include #incl原创 2014-02-18 16:23:30 · 776 阅读 · 0 评论 -
hdu2874 LCA求森林中任意两节点的距离
http://acm.hdu.edu.cn/showproblem.php?pid=2874 题意:给出一个森林,求两节点的的距离,是hdu2586的拓展 解题思路: 直接BFS超时,所以要使用LCA(离线tarjan算法),但要注意内存,下面代码将int改为short后才刚刚不MLE。。。 可以添加一个超级根节点,从而将森林变成一棵树。 例如求x,y节点的距离,那么先求出x,y原创 2014-02-18 17:49:07 · 964 阅读 · 0 评论