D - 定期券 (Commuter Pass) Editorial
by
Mitsubachi
考察の大まかな方針は公式解説と同じですが、以下のように考えることもできます。
$U$ から $V$ へのpathと $S$ から $T$ のpathが共通辺を持つとして、最適解において共通辺は $1$ つの区間を構成します。よって、 $x,y$ をともに通る $S$ から $T$ への最短pathが存在するとして、 $dis(U,x)+dis(V,y)$ を最小化したいです。
前準備として $U,V$ から各頂点の最短距離をdijkstraなどで求めます。次に、これを利用して $S,T$ から各頂点 $p$ について、 $p$ への最短距離とその最短距離を達成するpathが通りうる点のうち、 $V$ への距離が最小となるものについての $V$ への距離を求めます。これもdijkstraの要領で可能です。
ここで、 \(x\) を決め打ちます。まず、これが \(S\) から \(T\) への最短距離にあるかは \(dis(S,x)+dis(T,x)=dis(S,T)\) かで判断できます。そして、 \(dis(U,x)\) と \(y\) として最適な点についての \(dis(V,y)\) は前準備より求められます。
posted:
last update:
