LCA(最近公共祖先)

欢迎在评论区留言和订阅专栏!

LCA(Lowest Common Ancesto) 就是今天的主角,又叫最近公共祖先,用来求两个节点的最小父节点。

1.简介

LCA算法是一种倍增算法,分为3个步骤:遍历深度与父节点、倍增初始化和LCA主函数

2.代码

1.遍历深度与父节点(附main函数调用方式)

int n, m, s, f[100005][33],dep[100005];//倍增数组和深度数组
vector<int> a[500005];//结点vector

void dfs(int u, int fa){
	f[u][0] = fa;
    dep[u] = dep[fa]+1;
    
    for (int i = 0; i < a[u].size(); i++){
    	if (fa != a[u][i]) dfs

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

c++算法大全 文章被收录于专栏

本专栏收集了c++大部分基础算法,附有简介和代码。

全部评论
建议上新关于倍增的其他算法,如ST表
3 回复 分享
发布于 08-27 15:50 北京
总结一下,dep数组是用来记录深度,而f数组是用来记录father的
点赞 回复 分享
发布于 09-02 11:30 北京
ST表代码和这差不多
点赞 回复 分享
发布于 08-28 18:58 北京

相关推荐

评论
4
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务