【景区导游——LCA】

news/2025/2/3 2:04:33/

题目

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 10;
const int M = 2 * N;
int p[N][18], d[N], a[N];
ll dis[N][18]; //注意这里要开long long
int h[N], e[M], ne[M], idx, w[M];
int n, k;
void add(int a, int b, int c)
{e[idx] = b, ne[idx] = h[a], h[a] = idx, w[idx++] = c;
}
void dfs(int u)
{for (int i = h[u]; ~i; i = ne[i]){int j = e[i];if (d[j])continue;d[j] = d[u] + 1;p[j][0] = u;dis[j][0] = w[i];for (int k = 1; k <= 17; k++){p[j][k] = p[p[j][k - 1]][k - 1];dis[j][k] = dis[j][k - 1] + dis[p[j][k - 1]][k - 1];}dfs(j);}
}
ll lca(int a, int b)
{ll retv = 0;if (d[a] < d[b])swap(a, b);for (int i = 17; i >= 0; i--){if (d[p[a][i]] >= d[b]){retv += dis[a][i];a = p[a][i];}}if (a == b)return retv;for (int i = 17; i >= 0; i--){if (p[a][i] != p[b][i]){retv += dis[a][i];retv += dis[b][i];a = p[a][i];b = p[b][i];}}retv += dis[a][0];retv += dis[b][0];return retv;
}
int main()
{memset(h, -1, sizeof h);cin >> n >> k;for (int i = 1; i < n; i++){int a, b, c;cin >> a >> b >> c;add(a, b, c);add(b, a, c);}d[1] = 1;dfs(1);ll tmp = 0;cin >> a[1];for (int i = 2; i <= k; i++){cin >> a[i];tmp += lca(a[i - 1], a[i]);}for (int i = 1; i <= k; i++){ll ans = tmp;if (i == 1)ans -= lca(a[1], a[1 + 1]);else if (i == k)ans -= lca(a[k - 1], a[k]);else{ans -= lca(a[i - 1], a[i]);ans -= lca(a[i], a[i + 1]);ans += lca(a[i - 1], a[i + 1]);}cout << ans << ' ';}return 0;
}


http://www.ppmy.cn/news/1568836.html

相关文章

PCA9685 一款由 NXP Semiconductors 生产的 16 通道、12 位 PWM(脉宽调制)控制器芯片

PCA9685 是一款由 NXP Semiconductors 生产的 16 通道、12 位 PWM&#xff08;脉宽调制&#xff09;控制器芯片&#xff0c;广泛应用于 LED 调光、电机控制、伺服控制等领域。以下是关于 PCA9685 的一些关键特性和应用信息&#xff1a; 主要特性 16 通道 PWM 输出&#xff1a;…

缩位求和——蓝桥杯

1.题目描述 在电子计算机普及以前&#xff0c;人们经常用一个粗略的方法来验算四则运算是否正确。 比如&#xff1a;248153720248153720 把乘数和被乘数分别逐位求和&#xff0c;如果是多位数再逐位求和&#xff0c;直到是 1 位数&#xff0c;得 24814>145 156 56 而…

AI-ISP论文Learning to See in the Dark解读

论文地址&#xff1a;Learning to See in the Dark 图1. 利用卷积网络进行极微光成像。黑暗的室内环境。相机处的照度小于0.1勒克斯。索尼α7S II传感器曝光时间为1/30秒。(a) 相机在ISO 8000下拍摄的图像。(b) 相机在ISO 409600下拍摄的图像。该图像存在噪点和色彩偏差。©…

AI协助探索AI新构型的自动化创新概念

训练AI自生成输出模块化代码&#xff0c;生成元代码级别的AI功能单元代码&#xff0c;然后再由AI组织为另一个AI&#xff0c;实现AI开发AI的能力&#xff1b;用AI协助探索迭代新构型AI将会出现&#xff0c;并成为一种新的技术路线潮流。 有限结点&#xff0c;无限的连接形式&a…

图片导入到ppt之后再打印就糊掉了如何解决?

最近在做一个 p o s t e r poster poster的工作是用 P P T PPT PPT做的&#xff0c;结果从 v i s i o visio visio导入到 P P T PPT PPT中还是高清的&#xff0c;打印就糊掉了&#xff0c;注意如果是导出的话图片还是矢量的&#xff0c;但是由于有纸张的要求&#xff0c;所以必…

3 Yarn

3 Yarn 1. yarn的架构和原理1.1 yarn的基本介绍和产生背景1.2 hadoop 1.0 和 hadoop 2.0 的区别1.3 yarn 集群的架构和工作原理1.4 yarn 的任务提交流程 2. RM和NM的功能介绍2.1 resourceManager基本介绍2.2 nodeManager功能介绍 3. yarn的applicationMaster介绍3.1 applicatio…

使用UpdateCursor删除行

UpdateCursor除了可以编辑表或要素类的行外,还可以删除行.但要记住,在编辑会话外删除行时,更改是永久性的. 操作方法: 1.打开IDLE,新建一个脚本 2.导入arcpy和os模块 import arcpy import os 3.设置工作空间 arcpy.env.workspace "<>" 4.在with语句中新…

5.3.2 软件设计原则

文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则&#xff1a;抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义&#xff0c;然后通过这些操作对数…