AtCoder Beginner Contest 267 F問題 Exactly K Steps
問題
提出解答
問題の概要
頂点の木 が与えられる. ただし,
次の 個の問に答えよ.
- 問 : 頂点 からの距離が である頂点は存在するか? また, 存在するならばそのような頂点の例を1つ挙げよ.
制約
- は木.
解法
木 上の2頂点 間の距離を と書くことにする.
木 の直径の両端をなす2頂点を とする. このとき, 任意の頂点 に対して, が成り立つ. よって, 次の問題に帰着できる.
頂点 に対して, 次のうち, 少なくとも一方を満たすような頂点 は存在するか? するならばその頂点の例を挙げよ. なお, において, 頂点 の を根とした根付き木における深さを と書く.
- であり, は頂点 を根とする根付き木において は の先祖で, である.
- であり, は頂点 を根とする根付き木において は の先祖で, である.
上と下の問題はそれぞれ根を固定した Level Ancestor Problem であり, クエリ先読み, DFS を利用することによって, 時間で解くことができる.