ac1096.pas

来自「Ural(Acm.timus.ru)题解 By Maigo大牛」· PAS 代码 · 共 40 行

PAS
40
字号
program ural1096;
const
  maxk=1000;
  inf=65535;
var
  plate:array[1..maxk,1..2]of word;
  dist,path:array[1..maxk]of word;
  k,r,a,b,i,t:word;
  fail:boolean;
procedure succeed;
  begin
    a:=plate[i,1];
    writeln(dist[a]);
    repeat
      writeln(path[a]);
      a:=plate[path[a],2];
    until a=r;
    halt;
  end;
begin
  fillchar(dist,sizeof(dist),255);
  readln(k);
  for i:=1 to k do
    readln(plate[i,1],plate[i,2]);
  readln(r,a,b);

  dist[r]:=0;
  repeat
    fail:=true;
    for i:=1 to k do
      if (dist[plate[i,2]]<inf) and (dist[plate[i,1]]=inf) then begin
        dist[plate[i,1]]:=dist[plate[i,2]]+1;
        path[plate[i,1]]:=i;
        if (plate[i,1]=a) or (plate[i,1]=b) then succeed;
        fail:=false;
      end;
  until fail;
  writeln('IMPOSSIBLE');
end.

⌨️ 快捷键说明

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