问题1685--Oh! My God

1685: Oh! My God

时间限制: 1 Sec  内存限制: 128 MB
提交: 38  解决: 18
[状态] [讨论版] [提交] [命题人:]
题目描述
由于潘神的任性,导致买了太多的辣条吃不完了。正好他的队友wx也很喜欢吃辣条,于是潘神决定把剩下的辣条送一点给wx吃。但是送也不能白送,潘神把好多包辣条放到了一个n*n的迷宫里面,让wx按移动规则去拿,而且这个迷宫还不是一般的迷宫,还有很多的陷阱。
wx的移动规则如下:
1、wx每次只能以其中某一包辣条为目标进行移动。
2、wx每次移动分为两个步骤:假设wx当前的坐标为(x0,y0),目标辣条的坐标为(x,y),步骤一为先移动到(x,y0)点或者先移动到(x0,y)点,步骤二为移动到辣条所在的(x,y)点。并且对于每个步骤,wx都必须笔直移动(也就是说如果wx现在在(1,1)点想要走到(1,3)点就必须按照(1,1)->(1,2)->(1,3)这样的路径移动),因此如果路径上存在陷阱,wx就会毫不犹豫地掉进去挂掉 >_<。
3、wx每次移动到相邻的点的时间是1秒,也就是说假设wx现在在(1,1)点,那么他移动到(1,0)、(1,2),(2,1),(0,1)的时间都是1秒。因此如果wx现在在(1,1)点本次移动到(3,3)点,那么如果路径中没有陷阱的话,wx本次移动所花费的时间就是4秒。
现在给出n*n的矩阵代表迷宫的构造,其中:
“S”代表wx一开始的位置。
“X”代表陷阱。
“O”代表空地(就是可以走的点)。
“L”代表辣条。
聪明的你帮忙计算一下wx拿完所有辣条最少需要花多少秒吧!如果wx不能够拿完所有的辣条则输出“Oh! my latiao!”(不带引号)。
注意,如果wx挂掉了的话就不能再移动去拿辣条了!

输入
首先输入一个T,代表有T组测试实例。(1<=T<=10)
对于每组测试实例,先输入一个整数n,代表迷宫的阶数。(2<=n<=10)
接下来输入n行代表迷宫的构造,输入保证仅含有“S”、“X”、“O”以及“L”。并且“S”只有一个,“L”必会出现且不超过5个。

输出
对于每组测试实例,输出一个整数代表wx拿完所有辣条最少需要花多少秒。如果wx不能够拿完所有的辣条则输出“Oh! my latiao!”(不带引号)。
样例输入 Copy
2
5
SOXOO
OOOXX
OXLOO
OOOOL
OOOOO
3
LOO
OLX
OXS
样例输出 Copy
10
Oh! my latiao!
提示
对于样例一,最佳拿法为:
第一次移动:S(0,0)->O(3,0)->L(3,4) 花费7秒
第二次移动:L(3,4)->O(3,2)或O(2,4)->L(2,2) 花费3秒
所以最少的时间为10秒。
(箭头到代表每次的移动的两个步骤。)

来源/分类