幅優先探索による迷路最短経路問題の解決


幅優先探索による迷路最短経路問題の解決
タイトル:N*Mの大きさの迷路が与えられ、迷路は通路と壁で構成され、一歩ごとに隣接する上下左右4格子の通路に移動することができる.始点から終点までの最小ステップ数を求める.
注意:本題では、始点から必ず終点まで移動できると仮定します.
せいげんじょうけん
N,M<=100
(#.S Gは壁、通路、始点、終点をそれぞれ表す)
#include
#include
using namespace std;

const int INF=100000000;

const int MAX_M=100,MAX_N=100 ;
typedef pairP;

char maze[MAX_N][MAX_M+1];//  

int N,M;
int sx,sy;//    
int gx,gy;//    
int d[MAX_N][MAX_M];//            

//4        
int dx[4]= {1,0,-1,0},dy[4]= {0,1,0,-1};


//  (sx,sy) (gx,gy)     
//      ,  INF

int bfs()
{
	queue

que; // INF for(int i=0; i=0&&nx=0&&ny>N>>M; for(int i=0; i>maze[i][j]; if(maze[i][j]=='S') sx=i,sy=j; if(maze[i][j]=='G') gx=i,gy=j;// if , }// , if 。 } solve(); return 0; } // //10 10 //#S######.# //......#..# //.#.##.##.# //.#........ //##.##.#### //....#....# //.#######.# //....#..... //.####.###. //....#...G#


タイトルは『チャレンジプログラミングコンテスト』から