摘要: 树上任意两点的最近祖先,必定就是这两个节点的最短路径上深度最小的那个点。例如:下图中,节点7和5,其最短路径为7--4--1--5, 这条路径上深度最小的点为节点1,其深度为1.节点1即为节点7和5的LCA。因此,要找到任意两个节点的LCA,只需要先找到上述最短路径,再找到最短路径中深度最小的点。而... 阅读全文
posted @ 2015-02-21 20:26 __brthls 阅读(249) 评论(0) 推荐(0)
摘要: 题目链接:http://hihocoder.com/problemset/problem/1068我的代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 #define MAXN 1000005 8 9 in... 阅读全文
posted @ 2015-02-21 14:55 __brthls 阅读(123) 评论(0) 推荐(0)
摘要: tarjan算法是处理最近公共祖先问题的一种离线算法。算法思路:先将所有的询问搜集起来。然后对树进行dfs,在dfs的过程中对节点进行着色。当到达某个节点x的时候,给x着色为灰色,离开x的时候,着色为黑色。当到达x并将其着色为灰色后,处理与x相关联的所有询问:(这里有一个显然的事实:所有的灰色节点都... 阅读全文
posted @ 2015-02-21 13:24 __brthls 阅读(244) 评论(0) 推荐(0)