問題はこちら
問題概要
頂点のグラフがあり,頂点から頂点に重みの有向辺が張られている.頂点から頂点までの最短距離を求めよ.解説
であるからは- なら
- なら
となります.
頂点をでソートすると,各についてとなるやとなるは連続します.したがって,頂点をでソートし(つまりとなるように頂点番号を振りなおし)以下のようなグラフを考えればよいです.
- 頂点はの個.
- からに重みの有向辺を張る().
- からに重みの有向辺を張る().
- からに重みの有向辺を張る().
- となる最小のに対し,からに重みの有向辺を張る().
ソート前の頂点がソート後にになったとすると,このグラフにおけるからまでの最短距離が答えになります.計算量はです.
後で図とか載せます.(寝るので)
例
「が与えられるので,頂点からに重みの有向辺を張る」といういくつかのクエリを処理した後,頂点から頂点までの最短距離を求めてください.
制約
この問題が解ければ今回の問題も解けます.
の例で説明します.以下のように頂点を増やします.
ここで以下のように辺を張ると
のクエリが与えられたときは黒頂点から赤頂点に重みの有向辺を張ればよいです.答えは黒頂点から黒頂点までの最短距離であり,辺の重みは非負なのでダイクストラ法で解けます.