lca 倍增模版
2024-09-02 11:51:41
const int POW = ;
void dfs(int u,int fa){
d[u]=d[fa]+;
p[u][]=fa;
for(int i=;i<POW;i++) p[u][i]=p[p[u][i-]][i-];
int sz=edge[u].size();
for(int i=;i<sz;i++){
int v=edge[u][i];
if(v==fa) continue;
dfs(v,u);
}
}
int lca( int a, int b ){
if( d[a] > d[b] ) a ^= b, b ^= a, a ^= b;
if( d[a] < d[b] ){
int del = d[b] - d[a];
for( int i = ; i < POW; i++ ) if(del&(<<i)) b=p[b][i];
}
if( a != b ){
for( int i = POW-; i >= ; i-- )
if( p[a][i] != p[b][i] )
a = p[a][i] , b = p[b][i];
a = p[a][], b = p[b][];
}
return a;
}
最新文章
- iOS 疑难杂症 — — 推送本地国际化 loc-key 本地化失败的问题
- 干货|宏巍软件之Java线程监控之旅
- C# 实现单实例程序
- 配置Log4j(很详细)
- base64coder调用
- dubbo 解决Multicast java.net.SocketException: No such device
- [笔记]--在Windows下配置Git
- 10行Python代码解决约瑟夫环(模拟)
- PHP数组函数相关
- IOS开发网络篇之──ASIHTTPRequest详解
- Event 元标签中的代码提示问题
- angularjs不同页面间controller传参方式,使用service封装sessionStorage
- 关于ligerform中select与text的赋值与取值
- CXF_Spring_Rest
- gridContro使用随记
- Web缓存(一) - HTTP协议缓存
- 关于Mybaits10种通用的写法
- OI骗分神器——模拟退火算法
- EOS 开发终极神器-vscode (你绝对找不到的干货)
- ML平台_饿了么实践