冠军之路:寻找击败所有精英训练师到达出口的最短路径
类型:程序题

当训练师眼神对上的那一刻,就会开始对战。lxz来到了冠军之路的山洞中,山洞的地图是一个N*M的矩形:

  • .代表可以行走的地面
  • #代表无法行走的岩石
  • I代表山洞的入口,即lxz现在所在的位置
  • O表示冠军之路的出口
  • w/a/s/d代表四个朝向的精英训练师:w向上,s向下,a向左,d向右,训练师所在位置不可行走。

lxz可以向上下左右四个方向行走,矩形的四周都是山洞的岩石,无法行走。如果lxz出现在精英训练师正对方向的一条线上,且没有被岩石或其他精英训练师阻挡,那么lxz就会与这个精英训练师进行对战,每位训练师只会与lxz对战一次。

为了通过冠军之路,lxz必须击败所有精英训练师。本题要求找到一条击败所有精英训练师并走到冠军之路出口的最短路径。

时间限制:1000ms
内存限制:65536KB

输入

第一行是两个整数 N, M 表示地图的大小,0 < N, M <= 100。接下来是N行,每行M个字符,代表冠军之路的地图,训练师的个数不超过8。

输出

一个整数,表示击败所有精英训练师并走到冠军之路出口的最短路径的长度。如果无法击败所有精英训练师或者无法到达出口,输出 -1

样例输入

3 3
Id.
...
Oa#

样例输出

8
代码编辑器
测试用例输入
{{resultStatus.text}}