ABC218 F - Blocked Roads
公式解説より効率の良いアルゴリズムの説明です.
問題はこちら
問題概要
解説
頂点例えば,下図のグラフにおいて,ある黒の辺を消しても赤の辺からなる最短経路が通れるままなので答えは元のグラフの最短距離になります.
最短経路に含まれる辺の数は高々

最短経路上のある辺を消したグラフの最短距離は下図のような位置関係にある頂点
で「頂点
から頂点
を通って頂点
に行くまでの最短距離」のうち最小のものが答えとなります.

このとき,の順で通るとします.
は
と
は元のグラフの最短経路上の辺を通り,
は元のグラフの最短経路上の辺を通らないような頂点とします.各頂点
に対して
を計算しておくとこの問題は以下のような問題になります.
これはSegment Treeやstd::setをを用いればで解けます.