首页 > 其他分享 >倍增LCA板子

倍增LCA板子

时间:2023-01-26 08:55:44浏览次数:41  
标签:dep include return int d% 板子 fa LCA 倍增

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int N=5e5+10; 
int n,m,s,a,b;
vector<int> e[N];
int dep[N],fa[N][20];

void dfs(int u, int f){
  dep[u]=dep[f]+1;
  fa[u][0]=f;
  for(int i=1; i<=19; i++) 
    fa[u][i]=fa[fa[u][i-1]][i-1]; 
  for(int v : e[u])
    if(v!=f) dfs(v, u);
}
int lca(int u, int v){
  if(dep[u]<dep[v])swap(u, v);
  for(int i=19; ~i; i--)
    if(dep[fa[u][i]]>=dep[v])
      u=fa[u][i];
  if(u==v) return v;
  
  for(int i=19; ~i; i--)
    if(fa[u][i]!=fa[v][i])
      u=fa[u][i], v=fa[v][i];
  return fa[u][0];
}
int main(){
  scanf("%d%d%d", &n,&m,&s);
  for(int i=1; i<n; i++){
    scanf("%d%d",&a,&b);
    e[a].push_back(b);
    e[b].push_back(a);
  }
  dfs(s, 0);
  while(m--){
    scanf("%d%d", &a, &b);
    printf("%d\n",lca(a, b));
  }
  return 0;
}

来自dx123

标签:dep,include,return,int,d%,板子,fa,LCA,倍增
From: https://www.cnblogs.com/CYLSY/p/17067549.html

相关文章

  • 轻重链剖分板子
    //LuoguP3384【模板】轻重链剖分/树链剖分#include<iostream>#include<cstring>#include<algorithm>#include<vector>#definelcu<<1#definercu<<1|1usin......
  • Bash/Shell自建助手函数:ucase、lcase:借助perl一键转换字符串字母为大小或小写
    概述ucase=>转换字母为大写lcase=>转换字母为小写直接在终端中调用ucase、lcase这两个函数即可,管道中有数据传入则读取管道中的数据,管道无数据传入则读取剪贴板中的......
  • 树上倍增
    https://codeforces.com/contest/702/problem/E题意:给一个n个点,n条有向边,n个权值的图,每个点一条出边问所有的点按着有向边走k的权值和,还有k条边上的最小权值是多少,......
  • Qemu查询支持的芯片的板子、CPU型号
    1.查看支持的板子(即SOC):qemu-system-xxx-Mhelp例如:想查询支持的arm芯片的板子:qemu-system-arm-Mhelp想查询支持的PowerPC(32位)芯片的板子:qemu-system-ppc-Mhel......
  • ING国际银行基于Volcano的大数据分析平台应用实践
    摘要:ING集团发表了《EfficientSchedulingOfHighPerformanceBatchComputingForAnalyticsWorkloadsWithVolcano-KrzysztofAdamski&TincoBoekestijn,ING》......
  • Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算
    摘要:北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布。本文分享自华为云社区《​​Volcano社区v1.7.0版本正式发布|云原生批量计算​​》,作者:华为云云原生团队。......
  • Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算
    摘要:北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布。本文分享自华为云社区《Volcano社区v1.7.0版本正式发布|云原生批量计算》,作者:华为云云原生团队。北京时......
  • 【题解】P4768 [NOI2018] 归程(树上倍增,Kruskal 重构树,dijkstra)
    【题解】P4768[NOI2018]归程作为一道NOI的D1T1,放在现在或许难度不够(?),但可能在Kruskal重构树还未普及的当时,还是相对来说比较难的一道题吧。写篇题解记录一下。题......
  • 倍增
    概述略。真让我一周把这些车出来不如~了我。真想整的话就...例题P4155[SCOI2015]国旗计划题意略。我一开始把题审错了以为是链...另外这里是要接力的,即覆盖......
  • 【组会】2023_1_13 看openradar 整理板子v1
    在学校采的数据,计算出来正确的数据大小应该是102400KB,但采下来的数据是51200KB(正确数据的1/2)(所以以后每次采数据之后要先手算一下bin文件大小对不对看openradar代码,......