flu - インフルエンザ (Flu) Editorial by Mitsubachi


各都市において何日目に流行が始まったかを保存すればよく、これはダイクストラ法の要領でいけるのですが、辺の持ち方を工夫しなければなりません。

各都市ペアの間に辺が張られているかを管理すると $O(n^2)$ なので工夫する必要があります。
$\left( x_i,y_i \right)$ から距離が $d$ 以下の座標 $\left( x,y \right)$ についてそこに都市があるかを全探索します。今回は座標が小さいので、都市があるかは $O(1)$ で入手できるので、頂点と繋がっている頂点を探すのは $O(d^2)$ でできます。実装の際は正方形ではなく、円の範囲で調べると定数倍の改善が狙えます。

結論として、この問題は \(O(n \log n + d^2 n)\) で解くことができます。時間制限が厳しいですが、一応間に合います。

posted:
last update: