情報奥赛一本通1254:迷宮を出る

1103 ワード

【テーマ説明】迷路に立っていると、複雑な道に方向感覚を失われ、迷路地図を手に入れることができれば、非常に簡単になります.
n*mの迷路の図面を手に入れたとしたら、起点から出口までの最短ルートを見つけてください.
【入力】第1行は、迷路の行数および列数を表す2つの整数nおよびm(1≦n,m≦100)である.
次のn行は、各行にmの文字列があり、迷路全体のレイアウトを表します.文字'.'空き地を表し、壁を表し、Sは起点を表し、Tは出口を表す.
【出力】始点から出口までの最低限の歩数を出力します.
【入力サンプル】3 S#T.#...【出力サンプル】6
検索コードは以下の通りです.
//1254:    
#include
using namespace std;
int l,c,k,i,j,m,n,t;
char map[101][101];
int num,que[10001][3];//que[i][0],      i       x,que[i][1]   y,que[i][2]            
int soux,souy,desx,desy,head,tail;//     
int dx[4]={-1,0,1,0},
	dy[4]={0,1,0,-1};//    、 、 、        
int main()
{
	cin>>m>>n;
	for(i=1;i<=m;i++)
		for(j=1;j<=n;j++)
			{
				cin>>map[i][j];
				if(map[i][j]=='S')
				{
					soux=i;
					souy=j;
				}
				if(map[i][j]=='T')
				{
					desx=i;
					desy=j;
				}
			}
	head=0;
	tail=1;
	que[1][0]=soux;//       
	que[1][1]=souy;
	que[1][2]=0;//        
	while(head