CF1073F Choosing Two Paths

题目描述

给定一棵包含 $n$ 个顶点的无向无权树。 无向树是一个连通的无向图,包含 $n-1$ 条边。 你的任务是从这棵树中选择两对顶点(所有被选中的顶点都必须互不相同),即 $(x_1, y_1)$ 和 $(x_2, y_2)$,使得 $x_1$ 和 $y_1$ 都不在从 $x_2$ 到 $y_2$ 的简单路径上,反之亦然(即 $x_2$ 和 $y_2$ 也都不在从 $x_1$ 到 $y_1$ 的简单路径上)。 保证对于给定的树一定可以选择出满足条件的两对顶点。 在所有可能的选择方案中,你需要选择一组,使得从 $x_1$ 到 $y_1$ 的路径与从 $x_2$ 到 $y_2$ 的路径的公共顶点数最大。在所有公共顶点数最大的方案中,再选择一组使得这两条路径的总长度最大。 保证对于给定的树,存在至少有两个公共顶点的答案。 路径的长度是指路径上的边数。 简单路径是指每个顶点最多只经过一次的路径。

输入格式

第一行包含一个整数 $n$,表示树的顶点数($6 \le n \le 2 \times 10^5$)。 接下来的 $n-1$ 行,每行描述树中的一条边。 第 $i$ 条边由两个整数 $u_i$ 和 $v_i$ 表示,表示该边连接顶点 $u_i$ 和 $v_i$($1 \le u_i, v_i \le n$,$u_i \ne v_i$)。 保证给定的边构成一棵树。 保证存在至少有两个公共顶点的答案。

输出格式

输出任意一组满足题目要求的两对顶点。 保证一定存在满足条件的选择方案。

说明/提示

第一个样例对应的图如下:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1073F/240c81d8c0649c71ee92437821440e7761310fb9.png) 两条路径的交集为 $2$(顶点 $1$ 和 $4$),总长度为 $4+3=7$。 第二个样例对应的图如下:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1073F/6c389544ddcc0274094aa4810ea900c37e29670a.png) 两条路径的交集为 $2$(顶点 $3$ 和 $4$),总长度为 $5+3=8$。 第三个样例对应的图如下:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1073F/607ccb06ab07d0cf6650c7e34cf624c5db33512a.png) 两条路径的交集为 $3$(顶点 $2$、$7$ 和 $8$),总长度为 $5+5=10$。 第四个样例对应的图如下:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1073F/a19a0cf4ee91bef5fa339fd3d828a321e8d550f5.png) 两条路径的交集为 $5$(顶点 $1$、$2$、$3$、$4$ 和 $5$),总长度为 $6+6=12$。 由 ChatGPT 4.1 翻译