LCA算法的实现

2023-05-16

#include<cstdio>
#include<string.h>
#include<algorithm>
#include<set> 
using namespace std;
const int MAXN=10005;
struct edge{
	int v,next;
}e[MAXN];
int p[MAXN],eid,d[MAXN],isroot[MAXN];
int f[MAXN][20];
void init(){
	memset(p,-1,sizeof(p));
	eid=0;
}
void insert(int u,int v){
	e[eid].v=v;
	e[eid].next=p[u];
	p[u]=eid++;
}
set<int>st;
void dfs(int x){
	for(int i=p[x];i+1;i=e[i].next){
		if(d[e[i].v==-1]){
			d[e[i].v]=d[x]+1;
			f[e[i].v][0]=x;
			dfs(e[i].v);
		}
	}
	return ;
}
int lca(int a,int b){
	if(d[a]<d[b]){
		swap(a,b);
	}
	int i,j;
	for(i=0;(1<<i)<=d[a];i++);
	--i;
	for(int j=i;j>=0;j--){
		if(d[a]-(1<<j)>=d[b])a=f[a][j];
	}
	if(a==b)return a;
	for(int j=i;j>=0;j--){
		if(f[a][j]!=f[b][j]){
			a=f[a][j];
			b=f[b][j];
		}
	}
	return f[a][0];
}
int main(){
	int n;scanf("%d",&n);
	init();
    for(int i=1;i<n;i++){
    	int ip1,ip2;
    	scanf("%d%d",&ip1,&ip2);
    	isroot[ip2]=1;
    	insert(ip1,ip2);
	}
    memset(d,-1,sizeof(d));
    int root;
	for(int i=1;i<=n;i++){
		if(isroot[i]==0){
		    root=i;break; 
	    }
	}	
    d[root]=0;
 	dfs(root);
	for(int level=1;(1<<level)<=n;level++){
		for(int i=1;i<=n;i++){
			f[i][level]=f[f[i][level-1]][level-1];
		}
	}
	int p;scanf("%d",&p);
	for(int i=1;i<=p;i++){
	    int ip1,ip2;
		scanf("%d%d",&ip1,&ip2);
		printf("%d\n",lca(ip1,ip2));	
	}
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LCA算法的实现 的相关文章

  • 物联网设备流水入库TDengine改造方案

    1 存储机制改造 针对提出的流水查询需求 xff0c 结合设备上报数据讨论后 xff0c 初步定以下几种方案 1 1 ES gt TDengine 1 ES入库有延时 2 ES没有提供数据监听API xff08 不能主动监听 xff0c 实
  • SpringBoot3集成Kafka优雅实现信息消费发送

    前言 首先 xff0c 你的JDK是否已经是8 43 了呢 xff1f 其次 xff0c 你是否已经用上SpringBoot3了呢 xff1f 最后 xff0c 这次分享的是SpringBoot3下的kafka发信息与消费信息 一 场景说明
  • SpringBoot3集成TDengine自适应裂变存储

    前言 首先很遗憾的告诉大家 xff0c 今天这篇分享要关注才可以看了 原因是穷啊 xff0c 现在基本都是要人民币玩家了 xff0c 就比如chatGPT copilot xff0c 这些AI虽然都是可以很好的辅助编码 xff0c 但是都是
  • Github Copilot编码神剑

    前言 今天跟大家分享的其实是现在比较火的Github copilot xff0c 另外 xff0c 就是分享下它的优雅使用 其实知道用这个以后 xff0c 瑟瑟发抖 xff0c 感觉就要失业了 不过真正用过后 xff0c 其实发现这要完全取
  • 一个基于缓存的业务链路日志记录设计方案

    前言 一个简单的全接口日志设计文档 xff0c 先分享设计文档 xff0c 后面分享核心设计代码 1 对外接口设计原则 1 1 基本原则 对外接口要遵守的基本原则 xff1a 1 开闭原则 2 依赖倒置原则 3 单一职责原则 4 接口隔离原
  • 基于缓存的统一请求日志实现

    前言 昨天说的会分享方案的具体实现 xff0c 今天就来分享想核心代码吧 一 思路 我们用的是springboot组服务 xff0c 每个链路通过http请求 所以要实现全链路的日志记录 xff0c 也都是围绕sprinboot做的处理 这
  • SpringBoot集成ChatGPT实现AI聊天

    前言 ChatGPT已经组件放开了 xff0c 现在都可以基于它写插件了 但是说实话我还真没想到可以用它干嘛 xff0c 也许可以用它结合文字语音开发一个老人小孩需要的智能的说话陪伴啥的 今天我就先分享下SpringBoot结合ChatGP
  • activemq 延时队列以及不生效问题

    最近在做的项目中有一个业务涉及到了订单的有效期的问题 xff08 即订单达到一定的时间未支付完成就让该订单失效 xff09 xff0c 于是就想到了延时队列的方式 xff0c 由于项目采用的是activemq xff0c 所以就写了个act
  • elasticsearch的分布式架构原理

    对于全文检索 xff0c lucene是目前最流行的搜索库 以前我们都需要学习使用lucene 基于lucene做相关的开发 xff0c 学习倒排索引的原理 xff0c 而现在 xff0c 我们可以直接使用现成的搜索框架了 xff0c 因为
  • vscode设置代理

    1 通过命令行方式设置 参考 xff1a https liliyuanshangcaoyisuiyikurongyehuoshaobujinchunfengchuiyousheng com 2021 vscode socks5 proxy
  • springboot oa 办公系统,springboot权限系统

    springboot oa 自动化办公系统 43 springboot 完整权限管理系统合二为一 xff01 办公自动化 xff08 OA xff09 是面向组织的日常运作和管理 xff0c 员工及管理者使用频率最高的应用系统 xff0c
  • linux下的shell运算(加、减、乘、除)

    关注微信公众号 虾米聊吧 获取所有资料干货 xff0c 每天更新技术干货 xff0c 一起交流一起学习 i 61 j 43 k 等价于 i 61 96 expr j 43 k 96 i 61 j k 等价于 i 61 96 expr j k
  • 仿QQ聊天程序(java)

    简易版qq聊天 xff1a qq聊天 简易版 resourcecode cn 推荐java最新聊天项目 xff08 java仿微信聊天 xff09 java 简单仿微信聊天 springboot Garry1115的博客 CSDN博客 sp
  • yum出错Error: Cannot find a valid baseurl for repo: base

    关注微信公众号 虾米聊吧 xff0c 每天更新一篇技术文章 xff0c 文章内容涵盖架构师成长必经之路应掌握的技术 xff0c 一起学习 xff0c 一起交流 最近在安装mysql的rpm包时 xff0c 出现了一个问题 xff0c 当使用
  • java web简单权限管理设计

    注 xff1a 由于该项目比较老 xff0c 所以没有采用maven管理 xff0c 建议下载java后台通用权限管理系统 springboot xff09 xff0c 对学习和使用会更有帮助 最近在做一个网站类型项目 xff0c 主要负责
  • C/C++ 开发神器 CLion 使用入门

    关注微信公众号 虾米聊吧 xff0c 每天分享知识干货 xff0c 和博主一起打卡 xff0c 进步 CLion是Jetbrains公司旗下新推出的一款专为开发C C 43 43 所设计的跨平台IDE xff0c 它是以IntelliJ为基
  • java后台通用权限管理系统(springboot)

    推荐 xff1a Java秒杀系统优化 高性能高并发 xff08 Java秒杀系统优化 高性能高并发 Garry1115的博客 CSDN博客 xff09 说明 xff1a 这是本人正在使用的一款通用权限管理系统 来源 xff1a 通过对网上
  • Kali Linux-2021.4a下载安装全过程

    一 镜像下载 xff1b 下载镜像地址通过阿里云开源镜像站进行下载 xff1b https mirrors aliyun com kali images 二 系统安装 xff1b 说明 xff1a 本次安装流程通过虚拟机进行 1 虚拟机配置
  • RH8的ansible安装与配置

    Ansible安装与配置 自定义环境 角色主机名ip地址组名控制主机server example com192 168 157 100server受控主机1node1 example com192 168 157 134node1受控主机2
  • UOS开发者调试签名

    开发者调试签名 2022 01 18 20 03 03 一 证书生成 xff08 1 xff09 打开统信应用商店 xff0c 搜索 证书工具 xff0c 单击安装证书工具 xff08 2 xff09 使用cert tool工具生成证书 执

随机推荐

  • JAVA 分解质因数

    7 3 分解质因数 求出区间 a b 中所有整数的质因数分解 输入格式 输入两个整数a xff0c b 数据规模和约定 2 lt 61 a lt 61 b lt 61 10000 输出格式 每行输出一个数的分解 xff0c 形如k 61 a
  • 使用customRef自定义ref,解决setup中处理异步问题。

    setup中不允许使用async await使用customRef可以让请求到的数据自动获取响应式状态详见下方demo lt template gt lt div gt num lt div gt lt button 64 click 61
  • apache2.4 中文乱码问题

    PHP ini里面的default charset 61 34 UTF 8 34 lt meta http equiv 61 34 content type 34 content 61 34 text html charset 61 UTF
  • VScode自定义配置代码片段详细教程(附带转码链接)

    目录 前言 1 定义自己常用的代码片段 2 通过转码链接进转译 3 Vscode中设置 3 1找到配置代码片段进行设置 3 2点击全局配置进入粘贴转译过的代码 4 检验自定义代码段是否成功 小结 xff1a 前言 众所周知在VScode的h
  • 注意力机制总结

    文章目录 1 通道注意力1 1 SENet xff08 谁用谁知道 xff0c 用了都说好 xff09 2 通道 amp 空间2 1 CBAM2 2 scSE2 3 Coordinate Attention 3 self attention
  • 轻量级网络总结

    文章目录 1 SqueezeNet2 ShuffleNet2 1 v12 2 v2 3 MobileNet3 1 v13 2 v23 3 v3 4 GhostNet4 1 v14 2 v2 1 SqueezeNet SqueezeNet A
  • 【低光增强】Zero-DCE

    文章目录 一 前言二 算法理解2 1 低光增强曲线2 2 整体框架2 3 网络结构2 4 损失函数2 4 1 空间一致性2 4 2 曝光控制2 4 3 色彩恒常2 4 4 光照平滑 2 5 Zero DCE 43 43 三 效果测试 一 前
  • 【对比度增强】Learning Tone Curves for Local Image Enhancement(LTMNet)

    文章目录 0 前言1 理解1 1 整体框架1 2 网络结构1 3 细节 2 亮点3 总结 0 前言 LTMNet这篇文章借鉴了CLAHE算法 xff0c 所有步骤与CLAHE一致 xff0c 不同之处在于LTMNet中局部映射曲线是通过CN
  • 【数字图像处理】边缘检测

    文章目录 0 前言1 Sobel算子2 Canny算子3 深度学习算法3 1 Holistically Nested Edge Detection xff08 HED xff09 3 2 Richer Convolutional Featu
  • 语义分割总结

    文章目录 0 前言1 数据集2 经典网络2 1 FCN2 2 U Net2 3 DeepLab2 4 PSPNet2 5 SegNet2 6 CCNet2 7 SegFormer 3 损失函数4 评价指标5 最新进展 xff08 2023
  • 使用matlab绘制世界地图并根据经纬度绘制点位(附m_map的下载与安装说明)

    文章目录 1 worldmap amp geoshow2 m map工具箱3 根据经纬度在世界地图上绘制点位 使用matlab绘制世界地图有两种方法 xff08 自己使用过的 xff0c 可能有别的我不了解的方法 xff09 xff1a 第
  • C 语言使用宏自定义可打印的枚举(enum) 类型

    1 前言 xff1a 说点废话 xff0c 时间紧的请直接跳过 xff0c 看后面的实现 尽管本人很反感 C 语言中的宏定义 xff0c 特别是滥用宏定义经常会让问题变的扑朔迷离 xff0c 但是不得不承认 xff0c 在某些时候 xff0
  • Matlab GUI设计之坐标转换(附Matlab GUI设计学习手册完整版pdf)

    文章目录 如何开始 xff1f 1 界面布局2 编写回调函数 相信看这篇文章的你们大部分没有用Matlab做过界面设计 xff0c 其实不只是你们 xff0c 我也是第一次 xff08 手动滑稽 xff09 xff0c 在此将我的经验同大家
  • 【Linux】线程互斥

    目录 1 进程线程间的互斥相关背景概念 2 互斥量mutex 2 1 基本概念 2 2 售票系统举例 2 3 解释 3 互斥量的接口 3 1 初始化互斥量 3 1 1 静态分配 3 1 2 动态分配 xff08 pthread mutex
  • C语言经典算法(八)——递归实现斐波那契数列的两种方法

    后继续整理算法并写出自己的理解和备注 C 43 43 实现的 xff1a 递归实现斐波那契数列 1 递归实现斐波那契数列Fib n lt 1 gt 题目描述 输入n值 xff0c 求解第n项的斐波那契数列值 lt 2 gt 方法一 概念法
  • 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况 xff1a 从终端软件登录远程的Linux主机 xff0c 将一堆很大的文件压缩为一个 tar gz文件 xff0c 连续压缩了半个小时还没有完成 xff0c 这时 xff0c 突然你断网了 xff0c 你登录不上远
  • Vue+Element-UI上传图片到七牛云踩过的坑——返回 404,报错:Document not found

    文章目录 前端上传图片到七牛云的流程七牛云地址1 常见问题2 分清区别 xff1a 配置区域和访问域名 代码示例 不是进来找报错原因 xff0c 看怎么上传图片的 xff0c 先看上传流程和分清区别 xff1a 配置区域和访问域名找到域名
  • MySQL8.0.3安装过程详细

    xff08 如果以前安装过MySQL先卸载 xff09 一 MySQL卸载 1 以管理员身份打开命令提示符 2 停止MySQL后台服务 MySQL8为自己设置的MySQL服务名 D mysql 8 0 30 winx64 bin gt ne
  • 基于opencv 的人脸签到系统

    import cv2 import os import numpy as np from PIL import Image pillow import pyttsx3 import sys import json def makeDir e
  • LCA算法的实现

    include lt cstdio gt include lt string h gt include lt algorithm gt include lt set gt using namespace std const int MAXN