?? p1340(ac).bak
字號:
const
MAXN=25;
MAXM=25;
dx:array[1..4] of integer=(-1,1,0,0);
dy:array[1..4] of integer=(0,0,-1,1);
var
map:array[0..MAXN+1,0..MAXM+1] of char;
d:array[1..MAXN,1..MAXM] of integer;
t,m,n:integer;
i,j:integer;
sx,sy,ex,ey:integer;
procedure dfs(x,y,k:integer);
begin
if k<d[x,y] then
d[x,y]:=k
else
exit;
if map[x-1,y]<>'o' then dfs(x-1,y,k+cost[x-1,y]);
if map[x+1,y]<>'o' then dfs(x+1,y,k+cost[x+1,y]);
if map[x,y-1]<>'o' then dfs(x,y-1,k+cost[x,y-1]);
if map[x,y+1]<>'o' then dfs(x,y+1,k+cost[x,y+1]);
end;
begin
readln(t);
readln(m);
readln(n);
for i:=1 to n do begin
for j:=1 to m do begin
read(map[i,j]);
if map[i,j]='s' then begin sx:=i; sy:=j; end;
if map[i,j]='m' then begin ex:=i; ey:=j; end;
if map[i,j]='.' then cost[i,j]:=1;
if map[i,j]='#' then cost[i,j]:=2;
end;
readln;
end;
for i:=0 to n+1 do begin map[i,0]:='o'; map[i,m+1]:='o'; end;
for j:=1 to m do begin map[0,j]:='o'; map[n+1,j]:='o'; end;
dfs(sx,sy,0);
writeln(d[ex,ey]);
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -