小可走迷宫1

时间限制:1秒        内存限制:128M

题目描述

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

给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。

输入描述

第一行是两个整数,R和C,代表迷宫的长和宽。( 1≤ R,C ≤ 40) 

接下来是R行,每行C个字符,代表整个迷宫。 

空地格子用‘.’表示,有障碍物的格子用‘#’表示。 

迷宫左上角和右下角都是‘.’。

输出描述

输出从左上角走到右下角至少要经过多少步(即至少要经过多少个空地格子)。计算步数要包括起点和终点。

样例

输入

5 5
..###
#....
#.#.#
#.#.#
#.#..

输出

9
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int N=100;
int vis[N][N],step[N][N],f,r;
char a[N][N];
int m,n;
int tx[]= {0,0,1,-1};
int ty[]= {1,-1,0,0};
struct node{
	int h,l;
}q[N];
void bfs(int x,int y) {
	vis[x][y]=1;//起点标记入队 
	q[r].h =x;
	q[r++].l =y;
	while(f>m>>n;
	memset(a,'#',sizeof(a));
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			cin>>a[i][j];
		}
	}
	bfs(1,1);
	cout<

你可能感兴趣的:(算法,图论)