C1132 - 迷宫最短路径

题目描述

一个迷宫由r行c列格子组成,有的格子有障碍物,不能走;有的格子是空地,可以走。

现在给定一个迷宫数据,求从指定的出发坐标走到终点坐标最少需要的步数。

只能往水平方向或者竖直方向走,不能斜着走。

输入格式

第1行,两个正整数r和c,分别代表迷宫的长和宽

接下来r行,每行c个字符,代表整个迷宫

空地格子使用.表示,有障碍物的格子用#表示

接下来1行,是出发点坐标x1和y1,用空格分隔(起点坐标为(1,1)

接下来1行,是终点坐标x2和y2,用空格分隔(终点坐标为(r,c))

起点和终点坐标不会相同

输出格式

输出从出发坐标(x1, y1)到终点坐标(x2, y2)所需要的最少的步数(即至少要经过多少个空地格子)。计算步数要包括起点和终点

如果不能从(x1, y1)走到(x2, y2)则输出-1(包括起点坐标、终点坐标的迷宫为#的情形)

样例 #1 输入

5 5
..###
#....
#.#.#
#.#.#
#.#..
1 1
5 5

样例 #1 输出

9

样例 #2 输入

5 5
..###
#....
#.#.#
#.#.#
#.#..
1 1
1 3

样例 #2 输出

-1

数据范围与提示

100%的数据:$1 \le r, c\le 40$,

出发点坐标和终点坐标都在合理的范围内,即在[1,1]到[r,c]之间

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:C1132.in,输出文件名为:C1132.out