![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最近公共祖先(LCA)
AKone123456
这个作者很懒,什么都没留下…
展开
-
Borrow Classroom----------------------------------思维(LCA)
解析:满足条件的得认真找!!!!!!!!!分为三种情况设a1 为lca(a,1)设bc 为lca(b,c)设c1 为lca(c,1)设ac 为lca(a,c)第一种: lca(a,c)==1 那么如果 a1<bc+c1 输出YES 否则输出NO第二种:ac<=bc 那么一定可以拦截 输出YES第三种 lca(a,c)!=1,那么a1<=bc+c1 那么一定...原创 2020-04-08 15:17:06 · 124 阅读 · 0 评论 -
Tree Queries----------------------------------------思维(LCA)
题意:给定一棵有根树,树根为1。再给出m个查询,每个查询有k个数。问能否找到一条链使得查询每个点到链的距离<=1解析:我们先找到这k个数中深度最大的节点,其余点依次和深度最大的节点(id)比较 如果 abs(depth[lca(id,x)]-depth[x])>1 那么输出NO#include<bits/stdc++.h>using namespace s...原创 2020-03-29 11:02:08 · 206 阅读 · 0 评论 -
E. 1-Trees and Queries--------------------思维(LCA)
Gildong was hiking a mountain, walking by millions of trees. Inspired by them, he suddenly came up with an interesting idea for trees in data structures: What if we add another edge in a tree?Then he...原创 2020-02-19 14:43:08 · 234 阅读 · 0 评论 -
LCA----------------------------------tarjan(离线做法)
时间复杂度:O(n+m)给出 n 个点的一棵树,多次询问两点之间的最短距离。注意:边是无向的。所有节点的编号是 1,2,…,n。输入格式第一行为两个整数 n 和 m。n 表示点数,m 表示询问次数;下来 n−1 行,每行三个整数 x,y,k,表示点 x 和点 y 之间存在一条边长度为 k;再接下来 m 行,每行两个整数 x,y,表示询问点 x 到点 y 的最短距离。树中结点编号从...原创 2020-02-18 13:27:07 · 176 阅读 · 0 评论 -
LCA-----------------------------倍增做法
倍增法fa[i,j]表示从第i个点,向上走2^j步所能走到的节点 0<=j<=logndepth[i]表示节点i的深度depth[i]=第i个点到根节点长度+1步骤(1)先将两个点跳到同一层(2)让两个点同时往上一直跳,一直跳到最近公共祖先下一层预处理: O(logn)查询: O(logn)来个模板给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定...原创 2020-02-17 22:15:23 · 189 阅读 · 0 评论