
最近公共祖先LCA
文章平均质量分 53
sunday_soft
毕业于东北大学,做教师和软件开发工作
展开
-
距离查询-离线Tarjan算法(POJ1330)
原题目:Farmer John’s cows refused to run in his marathon since he chose a path much too long for their leisurely lifestyle. He therefore wants to find a path of a more reasonable length. The input to this problem consists of the same input as in “Navigation原创 2022-12-04 15:58:38 · 130 阅读 · 0 评论 -
树上距离HDU2586(利用并查集的Tarjan算法)
题干请参考[树上距离HDU2586(LCA)](https://blog.youkuaiyun.com/hwdn3000/article/details/127939235?spm=1001.2014.3001.5501)Tarjan算法是离线解决LCA问题的算法。在线算法指每读入一个查询(求一次LCA就叫作一次查询),都需要运行一次程序才能得到本次查询答案。若一次查询时间需要O(logn)时间,则m次查询需要O(mlogn)时间。离线算法是先读入所有查询,然后运行一次程序得到所有查询答案。可以在O(n+m)时原创 2022-12-04 12:21:01 · 204 阅读 · 0 评论 -
树上距离HDU2586(在线RMQ算法)
该树的欧拉序列为1 2 4 6 8 6 9 6 4 2 5 7 5 2 1 3 1,搜索时得到6和5首次出现的下标i、j,然后查询该区间深度最小的节点,为6和5号节点的最近公共祖先。欧拉序列就是指在深度遍历过程中依次经过的节点记录下来,把回溯时经过的节点也记录下来,一个节点可能被记录多次,相当于从树根开始,一笔画出一个经过所有节点的回路。1、深度遍历,得到三个数组,每个节点首次出现的下标pos[ ],深度遍历得到的欧拉序列seq[ ],每个节点的深度dep[ ]。2、根据欧拉序列的深度,创建ST。原创 2022-11-30 17:20:55 · 214 阅读 · 0 评论 -
树上距离HDU2586(LCA)
每一个测试用例的第1行都包含n(2≤n≤40000)和m(1≤m≤20),表示房屋数量和查询数量。下面的n-1行,每行都包含三个数字i、j、k,表示有一条道路连接房屋i和j,长度为k(0原创 2022-11-26 11:35:40 · 319 阅读 · 0 评论 -
POJ1330最近公共祖先LCA
输入:第1行包含一个整数T,表示测试用例的数量。每个测试用例的第1行都包含整数N(2≤N≤10,000),表示树中的节点数。接下来N-1行,每行都包含一对边的整数,第1个整数是第2个整数的父节点(有N个节点的树有N-1条边)。每个测试用例的最后一行都包含两个不同的整数,求其LCA。题解:由于本题数据量不大,所以可以暴力求解最近公共祖先LCA。给你一棵树,找出两点的最近公共祖先LCA。原创 2022-11-18 19:07:06 · 480 阅读 · 0 评论