lca
文章平均质量分 68
19992144
这个作者很懒,什么都没留下…
展开
-
tarjan离线求lca
lca即为最近公共祖先,通过dfs遍历一棵树即可无顺序地求出lca 思路:先找出根节点,用有向边连树,进行dfs,因为每个节点最多被遍历一次,因此复杂度为O(n); 运用并查集,在遍历子树的时候将子树中所有的元素连接到子树的根节点上,此处需要用到并查集,因为并查集时间复杂度极小。 注意,是在回溯时才进行连接,因为如果在遍历时进行,则无法查到现在的lca,因为所有的节点都被连接在了第一个根节点原创 2016-08-30 20:51:47 · 333 阅读 · 0 评论 -
lca倍增
经过学习和(抄袭)学会了lca倍增。 跳表?acs[x][i]:x上2 i步的祖先 每次查找最大能减去2 i 提到同一高度 然后再一起上升找到祖先 #include #include #include using namespace std; int n,m,u,v; int used[100010],dis[100010],dep[100010]; int acs[100010][23]原创 2016-09-11 12:02:26 · 296 阅读 · 0 评论