题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树)。 接下来M行 ...
分类:
其他好文 时间:
2017-05-09 21:46:40
阅读次数:
142
洛谷——P3379 【模板】最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来N-1行每行包含两个正整数x、y,表示x结点和y结点之间有 ...
分类:
其他好文 时间:
2017-05-08 23:15:48
阅读次数:
259
转自 剑指Offer之 - 树中两个结点的最低公共祖先 题目: 求树中两个节点的最低公共祖先。 思路一: ——如果是二叉树,而且是二叉搜索树,那么是可以找到公共节点的。 二叉搜索树都是排序过的,位于左子树的节点都比父节点小,而位于右子树上面的节点都比父节点大。 如果当前节点的值比两个结点 的值都大, ...
分类:
其他好文 时间:
2017-05-08 12:20:37
阅读次数:
188
Distance Queries 题目描述 约翰的奶牛们拒绝跑他的马拉松,因为她们悠闲的生活不能承受他选择的长长的赛道。因此他决心找一条更合理的赛道。此题的输入于第一题相同,紧接着下一行输入一个整数K,以后K行为K个"距离问题"。每个距离问题包括两个整数,就是约翰感兴趣的两个农场的编号,请你尽快算出 ...
分类:
其他好文 时间:
2017-05-06 17:53:01
阅读次数:
128
Meet 紧急集合 这个题是在脖子oj(清北某奆佬给起的名字)八中oj(大视野在线评测)上的。 给出bzoj链接。 这个题还是求最近公共祖先的问题。 而该题不同于别的题,它是需要求三个点的最近公共祖先。 我们就需要求出三个点两两之间的LCA。 而这三个LCA之间,必有两个是相同的。 如果两个点相同, ...
分类:
其他好文 时间:
2017-05-06 11:46:43
阅读次数:
209
倍增法求LCA LCA(Least Common Ancestors)的意思是最近公共祖先,即在一棵树中,找出两节点最近的公共祖先。 倍增法是通过一个数组来实现直接找到一个节点的某个祖先,这样我们就可以在O(logn)的时间内求出求出任意节点的任意祖先。 然后先把两个节点中转化为深度相同的节点,然后 ...
分类:
其他好文 时间:
2017-05-05 18:26:29
阅读次数:
120
最近公共祖先 给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。 最近公共祖先是两个节点的公共的祖先节点且具有最大深度。 注意事项 假设给出的两个节点都在树中存在 样例 对于下面这棵二叉树 4 / \ 3 7 / \ 5 6 LCA(3, 5) = 4 LCA(5, 6) = 7 LCA(6, ...
分类:
其他好文 时间:
2017-05-03 13:21:11
阅读次数:
167
1.LCA (Least Common Ancestors),即最近公共祖先,是指这样一个问题:在有根树中,找出某两个结点u和v最近的公共祖先(另一种说法,离树根最远的公共祖先)。 2.双冒号 :: 操作符被称为域操作符(scope operator),含义和用法如下: a.在类外部声明成员函数。v ...
分类:
其他好文 时间:
2017-05-02 21:08:25
阅读次数:
166
我来存个档,防止忘记!2333 传送门:https://daniu.luogu.org/problem/show?pid=3379 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。 输入输出格式 输入格式: 第一行包含三个正整数N、M、S,分别表示树的结点个数、询问的个数和树 ...
分类:
其他好文 时间:
2017-05-02 09:55:13
阅读次数:
284
最近公共祖先:在一个有根树中,结点u、v的最近公共祖先是满足是u,v的公共祖先并且深度尽可能大的结点。 1、倍增法 首先如果两个点的深度如果不同,将深度较大的点跳到与深度较小的点一样的深度,再同时向上跳,首次相遇时即为最近公共祖先。 2、树剖法size x为以x为结点的子树的结点的个数 每个结点和它 ...
分类:
其他好文 时间:
2017-05-01 22:11:16
阅读次数:
200