AtCoder Beginner Contest 224 D 問題 8 Puzzle on Graph
問題
提出解答
問題の概要
頂点 () 辺からなる無向単純グラフ と 個のコマが与えられ, コマ は頂点 に置かれており, ある頂点に 個以上のコマが置かれていることはない. ※ちょうど 頂点にはコマがない.
コマを辺に沿ってコマがない頂点に移動させるとき, 以下のような状況にすることは可能か? また, 可能ならば, それは最短何手か?
- に対して, コマ は頂点 にある.
制約
- は単純グラフ
解法
コマが置かれている状況を列で表す. 長さ の列 と, 以下を対応させる.
- 頂点 にはコマ があり, , 頂点 にはコマ がある (ただし, 頂点 にコマが無い場合は とする).
ここで, は の並び替えであり, 逆に の並び替えに対応するようなコマの状況が存在する. よって, の並び替えと同一視し, 並び替え全体の集合を とすると, である.
この同一視により, の状況で, 辺 によって, 頂点 にあるコマをコマが無い頂点 に移動させることは以下で表すことができる.
- であるような に対して, の と を入れ替える.
において, で において, を交換した順列とすることにする. を
としたときのグラフ は以下のようになる (一部再掲).
- はコマの状況全てを表す集合 (1対1対応)
- に対して, ならば, から1手で にすることができ, 逆も成立する.
このことから, 初期状態に対応する の元を , 目指すべき状態に対応する の元を とすると, 求めるべき答えは 上に パスが存在するか? 存在するならばその最短距離を求めることに対応する.
計算量は として, であり, 注意して実装すれば十分に間に合う.