http://acm.hdu.edu.cn/showproblem.php?pid=1272 题目链接 思路: 1.每输入一组数据,如果两个点的祖先都是相同的,那么说明他们已经是一个集合的了,如果再连接a,b两个点,就会构成回路,这里也就是要输出no. 2.并查集判断是否存在回路已经通过上述过程判断 ...
分类:
其他好文 时间:
2020-05-07 00:27:33
阅读次数:
54
题目: 题目大意: 给一棵树,然后从树上拿出来几个点,问这几个点是否在同一条链上或者某些点和这条链的距离是否为1,满足 这样的条件 即 Yes,反之则 No. 考察点: LCA、最近公共祖先 侃侃: 同一条链上的点有啥特征呢? 在同一条链上,最深的点与较浅的点的最近公共祖先一定是 较浅的点。 所以, ...
分类:
其他好文 时间:
2020-05-03 20:42:56
阅读次数:
68
LCA( ),最近公共祖先,定义为两节点最近的公共祖先~~好像是废话~~ 前置芝士: 图论 此文章中均设 $\mathrm{fa}_i$ 为 $i$ 的父亲,$\mathrm{dep}_i$ 为 $i$ 的深度。 暴力 显然我们找出节点的所有祖先再 $n^2$ 比较即可。 当然你也可以一层层往上跳。 ...
分类:
其他好文 时间:
2020-05-03 10:18:17
阅读次数:
119
Description 有一个森林最初由 $n$ 个互不相连的点构成 你需要处理以下 $m$ 次操作: :添加从顶点A到B的边,使 $A$ 成为 $B$ 的子节点,其中保证 $A$ 是一个根顶点,$A$ 和 $B$ 在不同的树中。 :切断点 $A$ 到其父节点的边,保证 $A$ 是一个非根节点。 : ...
分类:
其他好文 时间:
2020-05-02 23:09:45
阅读次数:
65
题目: 解答: (递归) O(n) 当我们用递归去做这个题时不要被题目误导,应该要明确一点:这个函数的功能有三个:给定两个节点 p和 q (1)如果 p 和 q 都存在,则返回它们的公共祖先; (2)如果只存在一个,则返回存在的一个; (3)如果 p 和 q 都不存在,则返回NULL 本题说给定的两 ...
分类:
其他好文 时间:
2020-05-02 17:02:27
阅读次数:
47
最近公共祖先( ) 1. 概念 对于有根树 的两个结点 ,最近公共祖先 表示一个结点 ,满足 是`u,v`的 深度最大 的 祖先 节点。 算法分为 离线算法 和 在线算法 离线算法 ( ),是指基于在执行算法前输入数据已知的基本假设,也就是说,对于一个离线算法,在开始时就需要知道问题的所有输入数据, ...
分类:
其他好文 时间:
2020-05-02 09:31:09
阅读次数:
64
研究生复试题这么水的吗。。 根据合法距离得到所有合法边,跑一遍Kruscal以后判断所有点是不是有相同的祖先即可。 1 #include<iostream> 2 #include<algorithm> 3 #include<math.h> 4 #include<string.h> 5 using n ...
分类:
其他好文 时间:
2020-05-01 12:49:48
阅读次数:
57
题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [ ...
分类:
其他好文 时间:
2020-05-01 12:29:53
阅读次数:
54
js原型链 js原型链是什么? 在思考这个问题的时候,我们可能会有很多概念,【链子】、【祖先】、【father】 1. 要理解 首先要理解 对象的属性 都指向其他对象,Object.prototype 的 例外。 2. 单纯从 链 这个这个词来理解,js原型链更像是一种copy 或 引用。 简单理解 ...
分类:
Web程序 时间:
2020-04-30 10:06:09
阅读次数:
77
1.dfs 树 上图右图是左图以 为起点进行 时产生的生成树。 有向图的 生成树主要有 种边(不一定全部出现): 1. 树边( ):绿色边,每次搜索找到一个还 没有访问过的结点 ( 白点 )的时候就形成了一条树边。 2. 返祖边( ):黄色边,也被叫做回边,即 指向祖先 结点( 灰点 )的边。 3. ...
分类:
其他好文 时间:
2020-04-29 21:41:38
阅读次数:
56