⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p1340(ac).pas

📁 www.vijos.cn上一些习题的参考源码
💻 PAS
字号:
const
    MAXN=30;
    MAXM=30;
var
    map:array[0..MAXN+1,0..MAXM+1] of char;
    d,cost: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);

    fillchar(cost,sizeof(cost),0);
    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; cost[i,j]:=1; end;
            if map[i,j]='.' then cost[i,j]:=1;
            if map[i,j]='#' then cost[i,j]:=2;
            d[i,j]:=maxint;
        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);
    if d[ex,ey]<t then writeln(d[ex,ey])
    else writeln('55555');
    

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -