【图论】倍增与lca

复制代码
void dfs(long u,long father){
dep[u]=dep[father]+1;//只在这里初始化dep
 
for(long i=1;(1<<i)<=dep[u];i++)
    fa[u][i]=fa[fa[u][i-1]][i-1];//只这里用的倍增
 
for(long i=head[u];~i;i=edge[i].next){
    long v=edge[i].to;
    if(v==father)continue;
    fa[v][0]=u;
    dfs(v,u);
}
 
}
long lca(long x,long y){
if(dep[x]<dep[y])swap(x,y);
 
for(int i=20;i>=0;i--){//跳到同一个深度
    if(dep[fa[x][i]]>=dep[y])x=fa[x][i];
    if(x==y)return x;
}
 
for(int i=20;i>=0;i--){
    if(fa[x][i]!=fa[y][i]){//一起跳
        x=fa[x][i];
        y=fa[y][i];
    }
}
return fa[x][0];
}

提单1
题单2

Head out to the Target

相关推荐
CoderCodingNo8 小时前
【NOIP】2011真题解析 luogu-P1003 铺地毯 | GESP三、四级以上可练习
算法
iFlyCai8 小时前
C语言中的指针
c语言·数据结构·算法
查古穆9 小时前
栈-有效的括号
java·数据结构·算法
再一次等风来9 小时前
近场声全息(NAH)仿真实现:从阵列实值信号到波数域重建
算法·matlab·信号处理·近场声全息·nah
汀、人工智能9 小时前
16 - 高级特性
数据结构·算法·数据库架构·图论·16 - 高级特性
大熊背9 小时前
利用ISP离线模式进行分块LSC校正的方法
人工智能·算法·机器学习
XWalnut9 小时前
LeetCode刷题 day4
算法·leetcode·职场和发展
蒸汽求职9 小时前
机器人软件工程(Robotics SDE):特斯拉Optimus落地引发的嵌入式C++与感知算法人才抢夺战
大数据·c++·算法·职场和发展·机器人·求职招聘·ai-native
AI成长日志10 小时前
【笔面试算法学习专栏】双指针专题·简单难度两题精讲:167.两数之和II、283.移动零
学习·算法·面试
旖-旎10 小时前
分治(库存管理|||)(4)
c++·算法·leetcode·排序算法·快速选择算法