当前位置:网站首页>二叉树(北京邮电大学机试题)(DAY 85)
二叉树(北京邮电大学机试题)(DAY 85)
2022-07-27 01:06:00 【张学恒】
1:题目
给定一个 n 个结点(编号 1∼n)构成的二叉树,其根结点为 1 号点。
进行 m 次询问,每次询问两个结点之间的最短路径长度。
树中所有边长均为 1。
输入格式
第一行包含一个整数 T,表示共有 T 组测试数据。
每组数据第一行包含两个整数 n,m。
接下来 n 行,每行包含两个整数,其中第 i 行的整数表示结点 i 的子结点编号。如果没有子结点则输出 −1。
接下来 m 行,每行包含两个整数,表示要询问的两个结点的编号。
输出格式
每组测试数据输出 m 行,代表查询的两个结点之间的最短路径长度。
数据范围
1≤T≤10,
1≤n,m≤1000
输入样例:
1
8 4
2 3
4 5
6 -1
-1 -1
-1 7
-1 -1
8 -1
-1 -1
1 6
4 6
4 5
8 1
输出样例:
2
4
2
4
难度:简单
时/空限制:1s / 64MB
总通过数:654
总尝试数:1453
来源:北京邮电大学考研机试题
算法标签
2:代码实现
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int n, m;
int l[N], r[N], p[N];
int dist[N];
void dfs(int u, int d)
{
dist[u] = d;
if (l[u] != -1) dfs(l[u], d + 1);
if (r[u] != -1) dfs(r[u], d + 1);
}
int get_lca(int a, int b)
{
if (dist[a] < dist[b]) return get_lca(b, a);
while (dist[a] > dist[b]) a = p[a];
while (a != b) a = p[a], b = p[b];
return a;
}
int main()
{
int T;
cin >> T;
while (T -- )
{
cin >> n >> m;
for (int i = 1; i <= n; i ++ )
{
int a, b;
cin >> a >> b;
l[i] = a, r[i] = b;
if (a != -1) p[a] = i;
if (b != -1) p[b] = i;
}
dfs(1, 0);
while (m -- )
{
int a, b;
cin >> a >> b;
int c = get_lca(a, b);
cout << dist[a] + dist[b] - dist[c] * 2 << endl;
}
}
return 0;
}
边栏推荐
- B-树的应用以及添加和删除操作
- [paper]PointLaneNet论文浅析
- localStorage与sessionStorage
- Plato Farm全新玩法,套利ePLATO稳获超高收益
- 杀毒软件 clamav 的安装和使用
- A math problem cost the chip giant $500million!
- 基于GoLang实现API短信网关
- Okaleido tiger is about to log in to binance NFT in the second round, which has aroused heated discussion in the community
- Integrated water conservancy video monitoring station telemetry terminal video image water level water quality water quantity flow velocity monitoring
- vs2019 中编译和使用 protobuf 库
猜你喜欢

CS224W fall 课程 ---- 1.1 why Graphs ?

Plato Farm通过LaaS协议Elephant Swap,为社区用户带来全新体验

Cloud development sleeping alarm clock wechat applet source code

185. 部门工资前三高的所有员工(必会)

阿里云解决方案架构师张平:云原生数字化安全生产的体系建设

一体式水利视频监控站 遥测终端视频图像水位水质水量流速监测

用最原始的方法纯手工实现常见的 20 个数组方法

阿里云技术专家杨泽强:弹性计算云上可观测能力的构建

Boom 3D全新2022版音频增强应用程序App

Make ppt timeline
随机推荐
子模块cache缓存失效
HCIP第十三天笔记
window对象的常见事件
196. 删除重复的电子邮箱
智能指针shared_ptr、unique_ptr、weak_ptr
Inftnews | ggac and China Aerospace ases exclusively produce "China 2065 Collection Edition"
红宝书第四版的一个错误?
Skywalking系列学习之告警通知源码分析
Go to export excel form
素因子分解--C(gcc)--PTA
[动态规划中等题] LeetCode 198. 打家劫舍 740. 删除并获得点数
1.28亿美元!芬兰量子计算公司IQM获世界基金支持
CAS部署使用以及登录成功跳转地址
浅浅梳理一下双轴快排(DualPivotQuickSort)
Single case mode (double check lock)
Localstorage and sessionstorage
【flask】服务端获取客户端的请求头信息
抖音服务器带宽有多大,才能供上亿人同时刷?
go实现导出excel表格
[二分查找简单题] LeetCode 35. 搜索插入位置,69. x 的平方根,367. 有效的完全平方数,441. 排列硬币