P10105 [GDKOI2023 提高组] 游戏
题目描述
你正在树上玩游戏。
给定一棵 $n$ 个结点的树,有 $Q$ 次询问,每次给定 $x, y, z$,你要找到三个点 $(u, v, w)$ 满足 $\operatorname{dis}(u, v) =
x, \operatorname{dis}(u, w) = y, \operatorname{dis}(v, w) = z$。其中 $\operatorname{dis}(u, v)$ 表示树上 $u$ 和 $v$ 两点唯一简单路径所包含的边数,$\operatorname{dis}(u, u) = 0$。
保证有解。
输入格式
第一行一个整数 $n$,表示树的结点数。
接下来 $n - 1$ 行每行两个点 $u, v$ 表示一条 $u$ 到 $v$ 的边。
接下来一个整数 $Q$,表示询问次数。
接下来 $Q$ 行,每行三个整数 $x, y, z$ 表示一组询问。
输出格式
输出 $Q$ 行,每行三个整数 $u, v, w$,满足 $\operatorname{dis}(u, v) = x, \operatorname{dis}(u, w) = y, \operatorname{dis}(v, w) = z$。如果多组合法的
$(u, v, w)$,输出任意一组,保证有解。
说明/提示
对于 10% 的数据,满足 $n, Q ≤ 500$。
对于 20% 的数据,满足 $n, Q ≤ 2 \times 10^3$。
对于另外 20% 的数据,满足 $Q = 1$。
对于另外 20% 的数据,满足 $Q \le 10$。
对于另外 10% 的数据,满足第 $i$ 条边连接 $i$ 和 $i + 1$。
对于另外 10% 的数据,满足 $x = 0$。
对于 100% 的数据,满足 $1 ≤ n, Q ≤ 2 \times 10^5, 0 ≤ x, y, z ≤ 2 \times 10^5$。
下发 checker 和 checker.exe,分别用于 64 位 linux 以及 windows 下的答案校验。
你可以使用 `./checker < 输入文件名 > < 输出文件名 > < 答案文件名 >` 来检测你的输出文件是否合
法。
实际上下发的 checker 并不会用到答案文件,所以你只需要随便选择一个文件作为答案文件即可。
你需要保证输入文件合法,即格式正确并且有解,否则可能会出现未知错误。
根据你的输出文件的问题,checker 分别会返回一下信息:
1. 如果你的输出文件正确,则 checker 会返回 `Accepted!`。
2. 如果在第 $t$ 组数据,答案错误,则 checker 会返回 `Wrong answer on test t!`。
3. 如果你的格式错误,则 checker 会返回 `wrong output format` 后接相关错误信息。
UPD: 在洛谷下发 chk.cpp。