迷宫的最短路径

给定一个大小为N*M的迷宫,由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置。试求出起点到终点的最小步数。(本题假定迷宫是有解的)(N,M<=100)

样例输入:

10 10

样例输出:

22


#include
#include
#include
using namespace std;
const int maxn = 200,inf = maxn*maxn;
int n,m;
int D[maxn][maxn];
char Map[maxn][maxn];
typedef pair P;
int dx[4] = {-1,0,0,1},dy[4] = {-1,-1,1,1};
int BFS(int x,int y){
    queue

q; q.push(P(x,y)); while(!q.empty()){ P next = q.front(); q.pop(); for(int i=0;i<4;i++){ int nx = next.first + dx[i]; int ny = next.second + dy[i]; if(0<=nx && nx


你可能感兴趣的:(POJ,搜索,BFS)