题目信息

题目类型
练习
题目年份
2025
题目题型
编程题
关 键 词
简单的树上最近公共祖先查询

题目题干

描述

给出一棵包含 N 个节点的有根树,节点编号 1 到 N,根节点为 R。请回答 Q 个查询,计算节点 u 和节点 v 的最近公共祖先。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

祖先定义:任意节点 u 到根节点 R 的路径上的所有点(包括 u 和 R 在内)称为节点 u 的祖先。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

最近公共祖先定义:节点 u 和节点 v 的公共祖先中,深度最深的那个节点被称为节点 u 和 v 的最近公共祖先(也可以直观理解为距离它们最近的公共祖先)。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

例如,下图是以 1 号节点为根的有根树,其中 11 和 13 的最近公共祖先为 5,2 和 8 的最近公共祖先为 1,19 和 21 的最近公共祖先为 9,16 和 1 的最近公共祖先为 1,15 和 15 的最近公共祖先为 15。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

简单的树上最近公共祖先查询描述 给出一棵包含 N 个节点的有根树,节点编号 1 到 N,根节点为 R。请回答 Q 个查询,计算节点 u 和节点 v 的最近公共祖先。  祖先定义:任意节点 u 到根节点 R 的路径上的所有点(包括 u 和 R 在内)称为节点 u 的祖先。  最近公共祖先定义:节点 u 和节点 v 的公共祖先中,深度最深的那个节点被称为节点 u 和 v 的最近公共祖先(也可以直观理解为距离它们最近的公共祖先)。  例如,下图是以 1 号节点为根的有根树,其中 11 和 13 的最近公共祖先为 5,2 和 8 的最近公共祖先为 1,19 和 21 的最近公共祖先为 9,16 和 1 的最近公共祖先为 1,15 和 15 的最近公共祖先为 15。    输入 第一行包含两个整数 N, R (1<=R<=N<=1000) 分别表示节点总数和根结点编号。 接下来 N-1 行,每行表示一条边,包含两个整数 u, v (1<=u,v<=N, u≠v)。输入保证全部节点构成一棵树。 接下来一行,包含一个整数 Q (1<=Q<=2000) 表示询问次数。 接下来 Q 行,每行两个整数 x, y (1<=x,y<=N) 表示询问节点 x 和 节点 y 的最近公共祖先。 输出 一共 Q 行,每行一个整数表示答案。 样例输入 21 1 1 2 1 3 1 4 2 5 3 6 3 7 8 4 9 4 10 4 11 5 12 5 13 5 14 7 9 15 16 9 17 9 9 18 16 19 16 20 18 21 10 19 20 19 18 16 10 12 21 11 6 2 5 3 9 14 6 17 1 15 15 样例输出 16 9 4 1 1 2 1 3 1 15 提示 样例就是图中所示的这棵树。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库

输入
第一行包含两个整数 N, R (1<=R<=N<=1000) 分别表示节点总数和根结点编号。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
接下来 N-1 行,每行表示一条边,包含两个整数 u, v (1<=u,v<=N, u≠v)。输入保证全部节点构成一棵树。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
接下来一行,包含一个整数 Q (1<=Q<=2000) 表示询问次数。Um8100150满分答卷(100150.com)-青少年编程等级考试及竞赛题库
接下来 Q 行,每行两个整数 x, y (1<=x,y<=N) 表示询问节点 x 和 节点 y 的最近公共祖先。
输出
一共 Q 行,每行一个整数表示答案。
样例输入
21 1
1 2
1 3
1 4
2 5
3 6
3 7
8 4
9 4
10 4
11 5
12 5
13 5
14 7
9 15
16 9
17 9
9 18
16 19
16 20
18 21
10
19 20
19 18
16 10
12 21
11 6
2 5
3 9
14 6
17 1
15 15
样例输出
16
9
4
1
1
2
1
3
1
15
提示
样例就是图中所示的这棵树。

答案解析

相关题目

重建二叉树描述 给定一棵二叉树的前序遍历和中序遍历的结果,求其后序遍历。 输入 输入可能有多组,以EOF结束。 每组输入包含两个字符串,分别为树的前序遍历和中序遍历。每个字符串中只包含大写字母且互不
简单的树上最近公共祖先查询描述 给出一棵包含 N 个节点的有根树,节点编号 1 到 N,根节点为 R。请回答 Q 个查询,计算节点 u 和节点 v 的最近公共祖先。 祖先定义:任意节点 u 到根节点
简单的树上路径最长边查询描述 给定一棵带权的树,要多次查询树上两个顶点a,b之间的路径上的最长边的长度。 输入 第一行是整数n,表示树上的顶点数目,顶点编号1到n。 (2<=n<=100
树的叶子描述 给定一棵包含N个结点的树,结点编号1~N,其中1号结点是根。请你计算它一共包含多少个叶结点。 输入 第一行包含一个整数N。(1 <= N <= 10000) 以下N行每行包
父与子描述 给出一棵 N 个节点的有根树,节点编号 1 到 N,根结点编号 R。回答 Q 个询问,每次询问一个节点的父节点编号和儿子数目。 输入 第一行包含 3 个整数 N, R, Q (2<
硬币问题描述 某国银行有1元、5元、10元、50元、100元、500元的硬币无限多枚。现在要用这几种硬币支付N元,最少需要多少枚硬币? 输入 一个整数N(1 <= N <= 100000
有趣的数描述 只包含因子 2,3,5,7 的正整数被称作有趣的数,比如 4,10,12,35 都是有趣的数,而 1,19,23,111 则不是。如果把全部有趣的数从小到大排列,请问第 n 个数是多少?
括号匹配2描述 给出一个由小括号、中括号、大括号组成的括号字符串,判断它是否合法。 输入 第一行包含1个正整数 T,表示测试数据组数。 接下去 T 行,每行一个仅由小括号、中括号、大括号组成的字符串
最大奇数描述 现在有个N个0~9之间的数字,用这些数字能拼成的最大奇数是多少? 注意拼成的整数不能以0开头 输入 第一行输入一个整数N 第二行包含N个数字 输入保证至少能拼成一个奇数 对于50
两座岛屿的最短距离描述 给出一张大小为 n*n 的由 1 和 0 组成的正方形地图,1 代表土地,0 代表水域,上下左右四个方向相邻的土地(即 1)组成一座岛屿。题目中保证恰好有两座岛屿。 现在你可

提示声明

  • 免责声明:本站资源均来自网络或者用户投稿,仅供用于学习和交流:如有侵权联系删除!
  • 温馨提示:本文属于积分文章,需要充值获得积分或升级VIP会员,也可在会员中心投稿获取。

猜你喜欢