2083. 寻径指津(25分)

开拓者正在完成捉鬼任务,现在他被棋鬼的寻径指津问题给难倒了。

寻径指津的棋盘可以看作一个 n×mn \times m 的方格图。你需要提前为机巧输入移动方向指令,引导机巧在指定步数内走出迷宫。机巧将朝移动方向直行到底,直到碰到障碍物后执行下一个方向指令。在棋盘上还有一些压力桩,机巧经过压力桩后,压力桩将转变为障碍物。

请你帮他找出用最少的步数到达终点的指令。

输入

第一行两个整数 n,mn, m 表示这是一个 n×mn \times m 的棋盘 (3n,m1003 \leqslant n, m \leqslant 100 )。

接下来nn行,每行一个长度为 mm 的字符串 S(Si{#,?,.,S,E})S ( S_i \in \lbrace \# , ?, ., S, E \rbrace )。其中:

  • . 表示一个空的格子

  • # 表示格子上有障碍物

  • ? 表示格子上有一个压力桩

  • S 表示一个空的格子,并且是起点

  • E 表示一个空的格子,并且是终点

保证测试数据中棋盘四边均是障碍物或终点,有且仅有一个起点和一个终点,并且压力桩不超过 10 个。

输出

第一行一个数字 kk 表示从起点到终点最少需要的步数,如果从起点不能到达终点,则输出 -1。

接下来 kk 行,每行一个字符 c(c{U,D,L,R})c ( c \in \lbrace U, D, L, R\rbrace ),表示机巧执行的移动指令。

样例

标准输入 复制文本
6 8
#####E##
#......#
#..#...#
#...?..#
#..S...#
########
标准输出 复制文本
4
U
R
L
U
登录以提交代码。
单点时限 3 秒
内存限制 1024 MB
提交 99
通过 11