文档介绍:6264:走出迷宫 pascal程序广度优先搜索
描述
当你站在一个迷宫里的时候,往往会被错综复杂的道路弄得失去方向感,如果你能得到迷宫地图,事情就会变得非常简单。 
假设你已经得到了一个n*m的迷宫的图纸,请你找出从起点到出口的最短路。
输入
第一行是两个整数n和m(1<=n,m<=100),表示迷宫的行数和列数。
接下来n行,每行一个长为m的字符串,表示整个迷宫的布局。字符'.'表示空地,'#'表示墙,'S'表示起点,'T'表示出口。
输出
输出从起点到出口最少需要走的步数。
样例输入
3 3
S#T
.#.
...
样例输出
6
const dx:array[1..4] of integer=(1,0,-1,0);
dy:array[1..4] of integer=(0,-1,0,1);
type node=record
x,y,s:integer;
end;
var que:array[1..10000] of node;
a:array[1..100,1..100] of char;
n,m,i,j,sx,sy,nx,ny,tx,ty,head,tail:integer;
s:string;
book:array[1..100,1..100] of integer;
begin
read(n,m);
readln;
for i:=1 to n do begin
readln(s);
for j:=1 to n do begin
a[i,j]:=s[j];
book[i,j]:=0;
if a[i,j]='S' then begin sx:=i; sy:=j; book[i,j]:=1; end;
if a[i,j]='T' then begin tx:=i; ty:=j; end;
end;
end;
head:=1;
tail:=1;
que[tail].x:=sx;
que[tail].y:=sy;
que[head].s:=0;
inc(tail);
repeat
for i:=1 to 4 do begin