AtCoder Beginner Contest 289 E問題 Swap Places
問題
提出解答
問題の概要
頂点 辺の単純無向グラフ がある. ただし,
である. また, 各頂点 について, ならば赤, ならば青で頂点 は塗られている.
最初, 高橋くんは頂点 に, 青木くんは頂点 にいる.
次の行動を繰り返し行うことにより, 高橋くんが頂点 に, 青木くんが頂点 にいる状態にすることは可能か? 可能ならばその行動回数の最小値を求めよ.
- 2人は同時に各人が今いる頂点の近傍の頂点を選び, その頂点へ移動する. ただし, 2人の移動先の頂点の色は異なっていなければならない.
個のマルチケース
制約
- は単純無向グラフ
- 個のケースにおける の総和は 以下
- 個のケースにおける の総和は 以下
解法
に対して, と頂点に持つ, 次のような有向グラフ を構成する.
は以下を満たすような 全体の集合とする.
- 高橋くんが , 青木くんが にいる状態から1回の移動で高橋くんが頂点 , 青木くんが頂点 にいる状態にすることが可能である.
の頂点数は である. 辺の数を とすると,
となり, である. 今, であることから, から直接 を構成しても問題ない.
の構成方法から, 以下は同値である.
- 高橋くんが頂点 に, 青木くんが頂点 にいる状態にすることは可能
- において, 頂点 から頂点 へ到達可能である.
また, 頂点 から頂点 への有向歩道と2人の移動の方法が1対1に対応することから, 移動の最小回数は における から 間の距離と一致する.
これは におけるBFS によって求めることができる.
よって, の構成及び探索合わせて 時間で求めることができた.