#PX0046. 走迷宫

走迷宫

题目描述

江月诗现在在玩一个游戏,游戏来到了教学关卡,迷宫是一个 N×MN\times M 的矩阵。

江月诗的起点在地图中用 S 来表示,终点用 E 来表示,障碍物用 # 来表示,空地用 . 来表示。

障碍物不能通过。江月诗如果现在在点xy(x,y)处,那么下一步只能走到相邻的四个格子中的某一个:x+1y),(x1y),(xy+1),(xy1(x+1,y),(x-1,y),(x,y+1),(x,y-1)

江月诗想要知道,现在他能否从起点走到终点,如果能走到终点,那么最少的步数是多少?。

输入格式

本题包含多组数据。
每组数据先输入两个数字 N,MN,M
接下来 NN 行,每行 MM 个字符,表示地图的状态。
数据范围: 2<=N,M<=5002<=N,M<=500
数据组数不超过 1010 组,每组数据保证有一个起点 SS,同时保证有一个终点 EE

输出格式

对于每组数据输出一行,如果小明能够从起点走到终点,那么输出YesYes 接着输出到达终点的最少步数,否则输出 NoNo

输入样例#1

3 3
S..
..E
...
3 3
S##
###
##E

输出样例#1

Yes 3
No

说明/提示

你的代码需要处理输入输出,请使用如下样例代码读取输入和打印输出:

#include <iostream>
using namespace std;

int main() {
    int a, b;
    while (cin >> a >> b) { // 注意 while 处理多个 case
        cout << a + b << endl;
    }
}
// 64 位输出请用 printf("%lld")