#icpc2013summerday3f. [icpc2013summer_day3_f]Phutball
[icpc2013summer_day3_f]Phutball
负躁嫉妒的Ikuta君最近对玩围棋盘游戏非常着迷。
然而,由于无法打败朋友在围棋和五子棋中,他决定接受特训,学习一种不太知名的游戏Phutball。
这个游戏非常复杂,因此他决定首先特训自己,以判断自己是否能在自己的回合中取得胜利并结束游戏。
游戏的胜利条件如下:
- 白棋不能跳到黑棋所放置的位置上。
- 使用棋盘的中央部分 。
- 想要确定胜利条件的棋盘状态会给出一个白棋和若干黑棋的布局。
- “目标区域”指的是棋盘的底部或者指下方(参见下图)。
- 如果将白棋移到目标区域,则取得胜利。
- 为了取得胜利需要进行以下操作:
- 白棋可以进行一次或多次的跳跃。
- 跳跃时,白棋可以跳过相邻8个方向(上、下、左、右以及斜上、斜下)的黑棋之一。
- 不能跳跃到没有相邻黑棋的方向。
- 每次跳跃后,所跳过的黑棋会从棋盘上移除。
- 跳跃后的白棋必须位于目标区域或者棋盘上。
- 即使有两个或更多相邻的黑棋,也可以跳跃正好跨过它们。
- 白棋不能跳到黑棋所放置的位置上。(在跳跃的方向上必须连续存在黑棋)
上面的例子中,圆圈所示的地方可以跳跃,都是目标区域。但是,叉叉所示的地方不是目标区域,也不在棋盘内部,因此无法跳跃。
你的任务是帮助Ikuta君进行特训,编写一个程序来确定是否可以达到目标,并给出达到目标的最小跳跃次数。
输入
输入为一个 的棋盘,由"."、"O"和"X"组成的字符矩阵。每一行具有15个字符。
- "." 表示空白。
- "O" 表示白棋。
- "X" 表示黑棋。
约束条件
- 黑棋的数量不超过20个。
- 只会有一个白棋。
- 输入状态不会是已经取得胜利的状态。
输出
如果能够达到目标,输出最少的跳跃次数。否则,输出-1。
样例输入1
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
......O........
......X........
样例输出1
1
- 白子可以通过跳跃一次黑子来达到目标。
样例输入2
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
......O........
...............
样例输出2
-1
- 白子无法移动,因此无法达到目标。
样例输入3
...............
...............
...............
...............
...............
...............
...............
...............
...........O...
............X..
.............X.
.............X.
.............X.
...............
..............X
.........X.....
.............X.
......X....X..X
.....X.X.XX.X..
样例输出3
6
- 只需要进行6次跳跃就可以达到目标。
样例输入4
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
...............
.....XX........
.....XXXO......
......X........
样例输出4
4