AtCoder Beginner Contest 257 F問題 Teleporter Setting
問題
提出解答
問題の概要
無向グラフ が以下で与えられる.
に対して, 頂点 と頂点 を同一視したグラフを とする.
このとき, に対して, 以下の問 に答えよ.
- 上で, 頂点 と頂点 は連結か? 連結ならば 上で頂点 , 頂点 間の距離を求めよ.
制約
解法
問 における問題の解答は, 以下と同じである.
に長さ の辺 を加えたグラフを とする. このとき, 上で, 頂点 と頂点 は連結か? 連結ならば 上で頂点 , 頂点 間の距離を求めよ.
この問題を解くことにする. このとき, 上の頂点 から頂点 へのパスは次のうちのどれかに該当する.
- 長さ の辺 を使わないパス.
- 長さ の辺 を使い, そのうち, 頂点 から頂点 の向きに移動するパス.
- 長さ の辺 を使い, そのうち, 頂点 から頂点 の向きに移動するパス.
グラフ 上の2頂点 間の距離を , グラフ 上の2頂点 間の距離を と書くことにする.
すると, それぞれの場合における長さの最小値上から順に,
であるから,
であることがわかる.
よって, を求めるためには が分かればよいことがわかるので, それぞれを 01-BFS で求めることによって求めることができる.
01-BFS の時間計算量が であり, この前計算のもとで は各 に対して で求められるので, 全体で 時間で求められる.
補足
付け加える辺の長さを ではなく にして 01-BFS の部分を単純な BFS にしても実は正解を導くことが証明できる.