博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板:最近公共祖先(LCA)
阅读量:4552 次
发布时间:2019-06-08

本文共 995 字,大约阅读时间需要 3 分钟。

 

1 #include
2 #include
3 using namespace std; 4 int m, n, root; 5 struct qwq{ 6 int t, nex; 7 }edge[2*500001]; 8 int d[500001], f[500001][25], head[500001];//d数组记录深度 9 int cnt;10 void add(int x, int y){
//链式前向星存图 11 edge[++cnt].t=y; 12 edge[cnt].nex=head[x];13 head[x]=cnt;14 }15 void dfs(int a, int ft){
//预处理 16 d[a]=d[ft]+1;17 for(int i=0; i<=20; i++) 18 f[a][i+1]=f[f[a][i]][i];19 for(int i=head[a]; i; i=edge[i].nex){20 int v=edge[i].t;21 if(v==ft) continue;22 f[v][0]=a;23 dfs(v, a);24 }25 }26 int lca(int x,int y){27 if(d[x]
=0; i--){29 if(d[f[x][i]]>=d[y]) x=f[x][i];30 if(x==y) return x;31 }32 for(int i=21; i>=0; i--)33 if(f[x][i]!=f[y][i]) x=f[x][i], y=f[y][i];34 return f[x][0];35 }36 int main(){37 scanf("%d%d%d",&n,&m,&root);38 for(int i=1; i

 

转载于:https://www.cnblogs.com/Aze-qwq/p/9337652.html

你可能感兴趣的文章
带符号的整数做减法
查看>>
Cmder之vim配置
查看>>
SAP库龄表
查看>>
tomcat加密
查看>>
WebDriver的工作原理
查看>>
js call 理解
查看>>
ES6笔记01
查看>>
凯撒密码、GDP格式化输出、99乘法表
查看>>
linux下获取外网IP
查看>>
引用阿里巴巴图标库
查看>>
【学步者日记】实现破碎效果 Fracturing & Destruction 插件使用
查看>>
迷宫全解
查看>>
flex布局,如果其中一个过宽,会影响另个一的
查看>>
js---加入收藏夹
查看>>
泛型的优点
查看>>
一个研究生毕业以后的人生规划
查看>>
mysql 打开sql日志,记录所有sql
查看>>
vim less vi 不显示富文本 ESC
查看>>
PhantomJS 基础及示例 (转)
查看>>
PSP总结报告
查看>>