ツバサの備忘録

主に備忘録代わりに精進記録を載せていくつもりです。

ABC070 D - Transit Tree Path

問題
提出コード

解法

最短経路を求める問題で、頂点数が10^5あるので、各クエリごとにダイクストラ法を適用していたのでは間に合いそうにありません。
そこで、経由する点がKで固定であり、この木が無向グラフであることに注目すると、Kから各頂点への最短距離を前計算で求めておけば、i番目のクエリに対して、x_iからKまでの最短距離と、y_iからKまでの最短距離の和を求めるだけで、i番目のクエリの答えになります。
ということで、Kまでの入力を受け取った段階で、Kを始点とした各頂点に対する最短距離をダイクストラ法で求めるだけで、O(1)でクエリにこたえることができるので、これで間に合います。
今回のダイクストラ法は、とても基本的で、一番シンプルなものなので、ダイクストラ法の練習にもなると思います。