#P2225. Asteroids!

Asteroids!

题目描述

你身处太空中,想要回家。太空中存在许多小行星,你需要避开它们。

输入
输入包含最多100个测试用例。每个测试用例包含以下部分,且用例之间没有空行分隔:

  1. 起始行 - 一行字符串 "START N",其中 1N101 \leq N \leq 10
  2. 切片列表 - 共 NN 个切片,每个切片是一个 N×NN \times N 的矩阵,表示小行星场的水平切片。矩阵中的每个位置为以下两种值之一:
    • 'O'(字母“oh”):表示空区域。
    • 'X'(大写):表示存在小行星。
  3. 起始位置 - 一行 "A B C",表示飞船的起始坐标 [A,B,C][A, B, C]。坐标值为用空格分隔的整数。
  4. 目标位置 - 一行 "D E F",表示目标位置的坐标 [D,E,F][D, E, F]。坐标值为用空格分隔的整数。
  5. 结束行 - 一行 "END"。

坐标系的原点为 [0,0,0][0, 0, 0],因此每个坐标分量的取值范围为 00N1N-1(包括)。

  • 第一个坐标表示列(左列为0)。
  • 第二个坐标表示行(顶行为0)。
  • 第三个坐标表示切片(第一个切片为0)。

起始位置和目标位置均为空区域。

输出
对于每个测试用例,输出一行:

  • 如果存在路径,输出 "NN YY",其中 YY 是从起始位置到目标位置的最少移动步数。
  • 如果不存在路径,输出 "NO ROUTE"。

每次移动只能沿六个基本方向之一:上、下、左、右、前、后。即每次移动只能将当前位置向量的一个分量加1或减1。

输入样例

START 1
O
0 0 0
0 0 0
END
START 3
XXX
XXX
XXX
OOO
OOO
OOO
XXX
XXX
XXX
0 0 1
2 2 1
END
START 5
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
0 0 0
4 4 4
END

输出样例

1 0
3 4
NO ROUTE