「Day-4 提高笔记-LCA最近公共祖先」

news/2024/10/22 19:29:23
#include<iostream>
using namespace std;const int MAXN = 5 * 1e5 + 5;
struct node{int to,next;
}e[MAXN * 2];
int f[MAXN][20],dp[MAXN];//f[x][i] 表示 x 的第2^i个节点的编号 
int h[MAXN * 2],tot = 0;
int n,m,s;
void add(int x,int y){e[++ tot] = {y,h[x]};h[x] = tot;
}
void dfs(int x,int fa){dp[x] = dp[fa] + 1;f[x][0] = fa;//f[x][0] = x的第1(2^0)个父节点的节点编号 for(int i = 1;(1 << i) <= dp[x];i ++){f[x][i] = f[f[x][i - 1]][i - 1];}for(int i = h[x];i;i = e[i].next){int to = e[i].to;if(to != fa){dfs(to,x);}}return;
}
int u,v;
int LCA(int x,int y){if(dp[x] < dp[y]) swap(x,y);for(int i = 19;i >= 0;i --){if(dp[x] - (1 << i) >= dp[y]){x = f[x][i];}}if(x == y) return x;for(int i = 19;i >= 0;i --){if(f[x][i] != f[y][i]){x = f[x][i];y = f[y][i];}} return f[x][0];
}int main(){cin >> n >> m >> s;for(int i = 1;i <= n - 1;i ++){cin >> u >> v;add(u,v); add(v,u); }dfs(s,0);for(int i = 1;i <= m;i ++){cin >> u >> v;cout << LCA(u,v) << '\n';}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74763.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展

检查并开启 sqlite3 扩展打开 PHPStudy Pro 软件。 导航至设置 -> 配置文件 -> php.ini。 选择你当前使用的 PHP 版本(例如 php7.3.4nts)并点击打开 php.ini 文件。 在 php.ini 文件中搜索 extension=sqlite3。 如果该行被注释掉(前面有分号 ;),则去掉分号以启用扩展…

PbootCMS上传空间后前台打开内页显示404错误怎么解决

检查 URL 规则配置登录 PbootCMS 后台。 导航至 配置参数 -> URL规则。 选择 伪静态模式 并保存。添加伪静态规则根据你的服务器环境,选择合适的伪静态规则文件。 一般情况下,Apache 环境使用 .htaccess 文件。Apache 环境配置将 rewrite 文件夹中的 .htaccess 文件复制到…

例题2.3

例题2.3代码 L = [abc, 12, 3.45, python, 2.789] print(L) print(L[0]) L[0] = a L[1:3] = [b, Hello] print(L) L[2:4] = [] print(L)

习题2.5

习题2.5代码 import numpy as np import pandas as pd import sympy as sp sp.init_printing(use_unicode=True) import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[Times New Roman + SimSun + WFM Sans SC] plt.rcParams[mathtext.fontset]=cm Times New Roma…

高等数学 7.7常系数齐次线性微分方程

在二阶齐次线性微分方程 \[y + P(x)y + Q(x)y = 0 \tag{1} \]中,如果 \(y, y\) 的系数 \(P(x), Q(x)\) 均为常数,即 \((1)\) 式成为 \[y + py + qy = 0 \tag{2} \]其中 \(p, q\) 是常数,那么称 \((2)\) 为二阶常系数齐次线性微分方程。如果 \(p, q\) 不全为常数,就称 \((1)…

线性代数--线性方程组

线性方程组有解的判定 {x1+x2+x3=1x1−x2−x3=−32x1+9x2+10x3=11系数矩阵:A=(1111−1−12910)增广矩阵:A=(11111−1−1−3291011) n是未知量的个数,m是方程的个数怎么判断秩是否相等步骤:通过方程,写出增广系数矩阵 只做初等行变换,化为阶梯型 看系数矩阵的秩和增广系数…

Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题

本文将从阿里云 Python 探针的接入步骤、产品能力、兼容性等方面展开介绍。并提供一个简单的 LLM 应用例子,方便测试。作者:彦鸿 背景 随着 LLM(大语言模型)技术的不断成熟和应用场景的不断拓展,越来越多的企业开始将 LLM 技术纳入自己的产品和服务中。LLM 在自然语言处理…

计算机视觉领域的实际应用有什么

计算机视觉在多个行业和应用场景中有着广泛的实际应用,主要包括医疗图像分析、自动驾驶、物体检测、人脸识别、增强现实(AR)和虚拟现实(VR)、工业自动化、农业监测等。医疗图像分析用于诊断疾病和制定治疗方案,提高医疗服务的质量和效率。其中,自动驾驶是一个相对成熟的…