AT_kupc2020_h Beans on the Grid
Description
[problemUrl]: https://atcoder.jp/contests/kupc2020/tasks/kupc2020_h
$ H $ 行 $ W $ 列のグリッドがあります。グリッドの各マスには、皿が置かれているマスと皿が置かれていないマスがあります。
皿が置かれているマスのうち、いくつかのマスに豆が置いてあります。それぞれの豆は区別でき、$ 1 $ つの皿には複数の豆を乗せることができます。
このグリッドを使って、AliceとBobは次のようなゲームをしようと考えています。
- Aliceを先手として、手番を交互に繰り返す。
- 自分の手番では、後述する「手番における豆の動かし方」に沿って豆を1つ動かす。動かせる豆が存在しない場合、即座に手番のプレイヤーは敗北し、手番でないプレイヤーは勝利する。
両者が最適に行動したとき、どちらが勝利するか答えてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ H $ $ W $ $ c_{1,1} $ $ \cdots $ $ c_{1,W} $ $ \vdots $ $ c_{H,1} $ $ \cdots $ $ c_{H,W} $
ただし、 $ c_{i,j} $ はグリッドのマス $ (i,j) $ の状態を以下の形式で表している。
- $ c_{i,j}= $`#` のとき、マス $ (i,j) $ には皿がない。
- $ c_{i,j}= $`.` のとき、マス $ (i,j) $ には豆が入っていない皿がある。
- $ c_{i,j}= $`B` のとき、マス $ (i,j) $ には豆が1つ入っている皿がある。
Output Format
Aliceが勝利するときは`Alice`と、Bobが勝利するときは`Bob`と出力せよ。
Explanation/Hint
### 手番における豆の動かし方
以下、$ i $ 行 $ j $ 列目の座標を $ (i,j) $ と表記する。$ (1\ \leq\ i\ \leq\ H,\ 1\ \leq\ j\ \leq\ W) $
まず豆を $ 1 $ つ選ぶ。この豆の現在位置を $ (i,j) $ とすると、以下の $ 3 $ 種類の動きで条件をすべて満たすもののうち、$ 1 $ 種類を $ 1 $ 度だけ行う。
- $ 3 $ 種類の動き
- $ i+1\ \leq\ H $ のとき、$ (i+1,j) $ に移動させる。
- $ j=1 $ のとき、$ (i,W) $ に移動させる。そうでないとき、$ (i,j-1) $ に移動させる。
- $ j=W $ のとき、$ (i,1) $ に移動させる。そうでないとき、$ (i,j+1) $ に移動させる。
- 条件
- 移動先のマスに皿がある。
- 選んだ豆が初めて移動先のマスに訪れる。
### 制約
- $ 1\ \leq\ H,W\ \leq\ 1000 $
- $ H,W $ は整数である。
### Sample Explanation 1
はじめ、豆は $ (1,1) $ にあります。 - Aliceの $ 1 $ 回目の手番では、豆を $ (1,2) $ に移動させるしかありません。 - Bobの $ 1 $ 回目の手番では、豆を $ (2,2) $ に移動させるしかありません。 - Aliceの $ 2 $ 回目の手番では、豆を $ (2,3) $ に移動させるしかありません。 - Bobの $ 2 $ 回目の手番では、豆を動かすことができません。 したがって、Bobの敗北となり、Aliceの勝利となります。
### Sample Explanation 3
豆を $ (1,1) $ から $ (1,3) $ へ動かせることに注意してください。
### Sample Explanation 4
豆が存在しないこともあります。