AtCoder Beginner Contest 233 F 問題 Swap and Sort
問題
提出解答
問題の概要
の並び替え が与えられる. 以下の操作を 回以下行って, にできるか?
- となる整数 を選び, を入れ替える.
可能ならばその一例をあげ, 不可能ならばその旨を報告せよ.
制約
この問題は以下の問題と同じである.
を 以下の整数全体の集合とする. として, 無向グラフ と の並び替え が与えられる.
以下の操作を 回以下で にできるか: 辺 を選び, 端点を とする. を入れ替える.
このとき, 操作が可能であることの必要十分条件は
無向グラフ において, 任意の に対して, 頂点 が同じ連結成分にある.
である. 以下ではこのことを示す.
ある において, 頂点 が同じ連結成分にないときは とすることが不可能である.
条件を満たす時は可能であることを示す. 以下のことを示す.
連結な 頂点のグラフ において, 回以下の操作で要求を満たすようにできる.
これが構成的に示すことができれば, 各連結成分ごとにその方法を行うことで, 一例を作ることができる.
の全域木 を1つ選び, それを固定する. この 上で可能であることを示す.
のときは明らかに 手で可能である.
とし, 頂点数が 未満の連結グラフにおいては必ず成立すると仮定する. ここで, は全域森なので, 葉 が存在する. そして, を となるように取る. ここで, 仮定から, は同じ連結成分の頂点なので, を端点とするパス が存在する. このとき, はパスなので, 長さ は 以下である *1. そして, 辺 の順に操作することにより, とすることができる.
よって, の場合に帰着でき, は葉なので, も連結である. 従って, 仮定から, 回以下で に対して要求を満たすことができる. 従って, 合わせて
回以下の操作で完成できることを示すことができた.
以上の証明をそのまま実装することにより, 一例を作ることができた. 操作回数について, という状況下において, という不等式が成り立つことから, 操作回数は高々 回以下であり, より, である.
故に, 存在するならば, 計算量 でその一例を求めることができた.