由于python超时了四五个点,所以用C++写了一下
AC代码

#include<iostream>
#include<vector>
using namespace std;
#define N 500010
int n,m,s;
int vis[N],far[N][20],dep[N];
vector<int> point[N];
void dfs(int root,int deep){dep[root]=deep;vis[root]=1;for(int i=0;i<point[root].size();i++){int tmp=point[root][i];if(!vis[tmp]){far[tmp][0]=root;dfs(tmp,deep+1);}}
}
void get_far(){for(int j=1;j<20;j++){for(int i=1;i<=n;i++){if(far[i][j-1]==0)continue;far[i][j]=far[far[i][j-1]][j-1];}}
}
int lca(int x,int y){if(dep[x]<dep[y]){int tmp=x;x=y;y=tmp;}//切换至同一层for(int i=19;i>=0;i--){if( (dep[x]-(1<<i))>=dep[y] )x=far[x][i];}if(x==y)return x;for(int i=19;i>=0;i--){if(far[x][i]!=0 && far[x][i]!=far[y][i]){x=far[x][i];y=far[y][i];}}return far[x][0];
}
int main(){int x,y;cin>>n>>m>>s;for(int i=0;i<n-1;i++){scanf("%d %d",&x,&y);point[x].push_back(y);point[y].push_back(x);}dfs(s,1);get_far();for(int i=0;i<m;i++){scanf("%d %d",&x,&y);printf("%d\n",lca(x,y));}return 0;
}

洛谷3379-LCA-C++-(LCA+倍增)相关推荐

  1. 洛谷P7518:宝石(倍增、可撤销并查集)

    解析 算法一 定义 upx,kup_{x,k}upx,k​ 为节点 xxx 从自己的颜色所在位置在返祖链上往后跳 2k2^k2k 个颜色到达的节点. 可以像倍增一样的求解. 这样对于一次询问 (s,t ...

  2. 洛谷P2680:运输计划(倍增、二分、树上差分)

    传送门 文章目录 题目描述 解析 问题 代码 题目描述 解析 求最大值的最小值 容易想到二分 然后...就没有然后了... 看了题解 学会了一个新技能:树上差分 (其实学长之前好像讲过...) 一般的 ...

  3. 洛谷P3295 [SCOI2016]萌萌哒(倍增+并查集)

    传送门 思路太妙了啊-- 容易才怪想到暴力,把区间内的每一个数字用并查集维护相等,然后设最后总共有$k$个并查集,那么答案就是$9*10^{k-1}$(因为第一位不能为0) 考虑倍增.我们设$f[i] ...

  4. 2018.11.04 洛谷P1081 开车旅行(倍增)

    传送门 思路简单码量超凡? 感觉看完题大家应该都知道是倍增sbsbsb题了吧. 首先预处理出从每个点出发如果是AAA走到哪个点,如果是BBB走到哪个点. 然后利用刚刚预处理出的信息再预处理从每个点出发 ...

  5. LCA问题(倍增法)

    之前写过了LCA的两个在线算法之一:DFS+ST方法(DFS+ST).本篇介绍另一种在线算法,用倍增思想来解决LCA问题.在学习倍增之前,先看一种倍增算法的退化版,有助于理解倍增法. 在找a和b的LC ...

  6. 洛谷P3379 【模板】最近公共祖先(LCA)

    洛谷P3379 [模板]最近公共祖先(LCA) 题目描述 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先. 输入输出格式 输入格式: 第一行包含三个正整数N.M.S,分别表示树的结点个数 ...

  7. 【LOJ#2236】【洛谷P3258】松鼠的新家【LCA】【树上差分】

    题目大意: 题目链接: 洛谷:https://www.luogu.org/problem/P3258 LOJ:https://loj.ac/problem/2236 给出一棵树以及 n n n个点走的 ...

  8. 【洛谷】1600:天天爱跑步【LCA】【开桶】【容斥】【推式子】

    P1600 天天爱跑步 题目描述 小c同学认为跑步非常有趣,于是决定制作一款叫做<天天爱跑步>的游戏.<天天爱跑步>是一个养成类游戏,需要玩家每天按时上线,完成打卡任务. 这个 ...

  9. 对LCA、树上倍增、树链剖分(重链剖分长链剖分)和LCT(Link-Cut Tree)的学习

    LCA what is LCA & what can LCA do LCA(Lowest Common Ancestors),即最近公共祖先 在一棵树上,两个节点的深度最浅的公共祖先就是 L ...

  10. 倍增:喷泉 深度解析(洛谷P7167)

    洛谷传送门 解析 什么破题 数据范围来看很明显最多到nlogn 首先,对于样例进行一下分析: 我们可以把它转化为一棵树: 每一个根都有对应的权,给你一个结点和加权和,问能爬到哪里 既然是树,自然要找爸 ...

最新文章

  1. js架构设计模式——由项目浅谈JS中MVVM模式
  2. gin获取get参数
  3. 【ARM】一步一步移植Linux Kernel 2.6.13到板子
  4. WebSocket使用案例
  5. 小米3g刷高格固件_小米路由器3G刷了老毛子之后恢复官方固件
  6. Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1
  7. 排序及查找----[(冒泡,快速)(拉格朗日,二分)]
  8. win10下安装node
  9. c++ 实现录音并且指定到文件_2020年的办公装备新选择,搜狗AI录音笔E1深度评测...
  10. android使用自定义,Android 自定义View的使用
  11. mysql连接池设计_数据库连接池(基于MySQL数据库)
  12. C++面试高频考点整理--基础
  13. Tensorflow2.5(gpu)+Python3.9+Spyder5的平台搭建
  14. Canto助力金融衍生品市场持续、健康、快速发展
  15. MP3音频解码详细过程(二)
  16. 打开word很慢(无网络时正常)
  17. 给父元素添加点击事件时,获取到的 event.target 为子元素(point-events: none 的妙用)
  18. lect01_codes03_eg梯度下降
  19. 酸菜鱼用什么鱼最好吃
  20. 【001】基于JavaFX实现的电子图片管理系统

热门文章

  1. 计算机毕业设计springboot睎晴贸易公司安保保洁管理平台
  2. cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-buil
  3. java接口返回pdf时修改文件名称问题
  4. 榆熙电商:拼多多商家怎样开通电子面单服务?有何优势?
  5. Spring retry重试框架
  6. 论文阅读(联邦学习):Exploiting Shared Representations for Personalized Federated Learning
  7. Amazon Shield Advanced 更新 – 自动应用程序层 DDoS 防御
  8. android 瘦脸模式 sdk,大眼瘦脸加磨皮通通不能少,论美颜SDK是如何实现的
  9. ​​​​​​​墨画子卿第三章:初心第2节:回家
  10. 关于NBMA网络基于RIP、HDLC、PPP,MGRE环境下实现所有PC互通