尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【题解】Luogu P10289 [GESP样题 八级] 小杨的旅游

【题解】Luogu P10289 [GESP样题 八级] 小杨的旅游
📅 发布时间:2026/6/19 18:26:41

思路

首先不难发现是树上最短路,使用最近公共祖先求解。令 \(u,v\) 的 LCA 为 \(k\),答案为 \(dep_u-dep_k+dep_v-dep_k\)。也可以在向上跳的同时累加步数。

然后考虑传送门,只要从 \(u,v\) 出发走到各自距离最近的传送门即可。使用 BFS 找到每个点距离最近的传送门。

最后答案为两者中较小值。

实现

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
const int INF=1e9;
int n,k,q,D;
int h[N],tot;
int fa[N][20],dep[N];
int f[N];
bool t[N],qvis[N];
struct Node{int to,nxt;
}e[2*N];
struct Qnode{int u,step;
};
queue<Qnode> Q;
void Add(int u,int v){tot++;e[tot].to=v;e[tot].nxt=h[u];h[u]=tot;
}
void bfs(){while(!Q.empty()){Qnode front=Q.front();int u=front.u,st=front.step;Q.pop();for(int i=h[u];i;i=e[i].nxt){int v=e[i].to;if(!qvis[v]){Q.push(Qnode{v,st+1});qvis[v]=1;f[v]=st+1;}}}
}
void dfs(int u,int cur,int fath){fa[u][0]=fath;D=max(D,cur);dep[u]=cur;for(int i=1;i<=log(dep[u])/log(2);i++) fa[u][i]=fa[fa[u][i-1]][i-1];for(int i=h[u];i;i=e[i].nxt){int v=e[i].to;if(v!=fath) dfs(v,cur+1,u);}
}
int LCA(int a,int b){if(dep[a]<dep[b]) swap(a,b);int dis=0;for(int i=log(D)/log(2);i>=0;i--){if(dep[fa[a][i]]>=dep[b]){a=fa[a][i];dis+=(1<<i);} }if(a==b) return dis;for(int i=log(D)/log(2);i>=0;i--){if(fa[a][i]!=fa[b][i]){a=fa[a][i];b=fa[b][i];dis+=2*(1<<i);}}dis+=2;return dis;
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);memset(f,0x3f,sizeof(f));cin>>n>>k>>q;for(int i=1;i<=n-1;i++){int u,v;cin>>u>>v;Add(u,v),Add(v,u);}for(int i=1;i<=k;i++){int x;cin>>x;Q.push((Qnode){x,0});t[x]=1,qvis[x]=1,f[x]=0;}bfs();dfs(1,1,0);for(int i=1;i<=q;i++){int u,v;cin>>u>>v;cout<<min(LCA(u,v),f[u]+f[v])<<'\n';}return 0;
}

时间复杂度 \(O(n\log n)\)。

相关新闻

  • 2025年获客系统品牌排行榜,有了它商机线索不用愁 - 品牌策略主理人
  • KOReader完整指南:如何在Kindle等设备上打造完美的电子书阅读体验
  • 国产蒸馏水器/实验室蒸馏水器/全自动蒸馏水器推荐工厂/厂家/制造商 - 品牌推荐大师

最新新闻

  • 深度解析macOS滚动事件拦截:构建专业级定制插件的完整指南
  • 常州多年黄金回收攻略,三十年实体经营,收的顶本地口碑有保障 - 奢侈品回收测评
  • 01_系统架构设计
  • 如何免费实现专业级直播抠像:obs-backgroundremoval插件完全指南
  • 新手必看!抖音保存视频到相册的详细步骤技巧 - 工具软件使用方法推荐
  • LaTeX长表格排版进阶:如何用longtable宏包实现跨页表格的精细控制?

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号