当前位置: 首页 > news >正文

【机房——LCA】

题目

代码

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+10;
const int M = 2e5+10;

int n, q, cnt[N];
int h[N], e[M], ne[M], idx;
int d[N], f[N][18], dist[N][18];

void add(int a, int b)
{
	e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
void dfs(int u, int fa)
{
	for(int i = h[u]; ~i; i = ne[i])
	{
		int j = e[i];
		if(j == fa) continue;
		d[j] = d[u] + 1;
		f[j][0] = u;
		dist[j][0] = cnt[u];
		for(int k = 1; k <= 17; k++)
		{
			f[j][k] = f[f[j][k-1]][k-1];
			dist[j][k] = dist[j][k-1] + dist[f[j][k-1]][k-1];
		}
		
		dfs(j, u);
	}
}
int lca(int a, int b)
{
	int retv = cnt[a] + cnt[b];
	
	if(d[a] < d[b]) swap(a, b);
	
	for(int i = 17; i >= 0; i--)
		if(d[f[a][i]] >= d[b])
		{
			retv += dist[a][i];
			a = f[a][i];
		}

	if(a == b) return retv - cnt[a];
	
	for(int i = 17; i >= 0; i--)
		if(f[a][i] != f[b][i])
		{
			retv += dist[a][i];
			retv += dist[b][i];
			a = f[a][i];
			b = f[b][i];
		}
		
	retv += dist[a][0] + dist[b][0];
	return retv - cnt[f[a][0]];
}
int main()
{
	memset(h, -1, sizeof h);
	scanf("%d%d", &n, &q);
	
	for(int i = 1; i < n; i++)
	{
		int a, b;
		scanf("%d%d", &a, &b);
		add(a, b); add(b, a);
		cnt[a]++, cnt[b]++;
	}
	
	d[1] = 1;
	dfs(1, -1);
	
	while(q--)
	{
		int a, b;
		scanf("%d%d", &a, &b);
		printf("%d\n", lca(a, b));
	}
}

相关文章:

  • 小米火龙CPU和其他几代温度太高的CPU是由谁代工的
  • 卢卡斯定理判断组合数奇偶(Codeforces Round 1006 (Div. 3)——F)
  • 【含文档+PPT+源码】基于SpringBoot的宠物领养系统设计与实现
  • Rust语言基础知识详解【四】
  • #11 如何使用 Kaggle packages
  • Vue学习教程-18Vue单文件组件
  • LeetCodehot 力扣热图100 括号生成
  • 水仙花数(华为OD)
  • 2025-03-01 学习记录--C/C++-PTA 7-35 有理数均值
  • CountDownLatch使用
  • DeepSeek 开源周五个开源项目,引领 AI 创新?
  • 构建神经网络之Matplotlib(持续完善)
  • 生态安全相关
  • 【 开发知识点 一 】 随机数生成器 /dev/urandom 和 /dev/random
  • 《几何原本》命题I.1
  • aws(学习笔记第三十课) 练习使用transit gateway
  • yolov12 部署瑞芯微 rk3588、RKNN 部署工程难度小、模型推理速度快
  • 计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
  • 计算机网络之传输层(tcp协议)
  • kubernetes 高可用集群搭建
  • 免费网站建设资讯/seo教学
  • 做网站如何月入10万/宁波网络推广运营公司电话
  • 用dede做的网站/网红营销
  • 网站开发日记/北京整站线上推广优化
  • 淄博学校网站建设哪家好/域名注册商
  • 做袜子娃娃的网站/爱站网关键词