Official

E - Reversi Editorial by yutaka1999


葉の頂点に注目します.その頂点に置かれている石の表が白色のとき,その頂点は隣接する頂点よりも先に選ばなければいけません.逆に,表が黒色の場合は,隣接する頂点よりも後に選ばなければいけません.

この考察を用いると,判定問題を解くことができます.頂点数が \(1\) の場合は自明なので,頂点数が \(2\) 以上とします.葉を \(1\) つ選びます.その頂点を隣接頂点よりも後に選ぶ必要がある場合,その頂点を除いて得られる木について判定問題を解けばよいです.逆に,隣接頂点よりも先に選ぶ必要がある場合,隣接頂点にある石を裏返した後に,その頂点を除いて得られる木について判定問題を解けばよいです.このように,頂点数について帰納的に考えることで,判定問題を解くことができます.

  • 実際は,表が白色の石の個数が奇数であることが必要十分条件になっています.

次に,辞書順最小の操作列を求める方法を考えます.先程と同様に帰納的に考えることで,各辺について,どちらの頂点を先に選ぶべきかが定まります.また,この操作順にさえ従えば,必ず操作が可能であることも分かります.よって問題は,DAG の辞書順最小のトポロジカルソートを求める問題に言い換えられます.これは,入次数が \(0 \) の頂点のうち番号が最小のものを順に取り除いていくことで求めることができます.

posted:
last update: