AtCoder Beginner Contest 257 D問題 Jumping Takahashi 2
問題
提出解答
問題の概要
座標平面上に 点 があり, の座標は である. ジャンプ力が のとき, 以下の条件を満たす場合に限り点 から点 へ移動できる.
適切に最初に 個の点から始点とする点を 1個選び, ジャンプ力を設定することにより, 始点から任意の点へ何回かの移動で到達できるようにしたい.
このとき, 設定すべきジャンプ力の最小値を求めよ.
制約
解法
点 から点 へ移動するために必要な最低限度のジャンプ力は のみから決定され, なので, 全ての に対して前計算で計算できる.
このとき, 始点 から始めるとする. このとき, 始点 から点 へ移動するために必要な最小のジャンプ力 は Dijstra 法を応用することで求めることができる *1. このとき, が始点 から始める場合における必要な最小のジャンプ力である.
従って, 求めるべきは
である. 各 を求めるために, Dijkstra 法 (Heap を使わない単純な) で時間計算量 で求める事ができるので, で正解を求めることができる.
*1:このようにできる理由: 最適な点 から点 への移動の途中に点 を経由する場合, が成り立つから