Guest User

Untitled

a guest
May 24th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.56 KB | None | 0 0
  1.     var
  2.       i,n,m,cnt,x,y,s,f : longint;
  3.       v,pred : array [1..100000] of longint;
  4.       u      : array [1..1000] of longint;
  5.      
  6.       function bfs(x,f : longint) : longint;
  7.       var
  8.         qb,qe,sn : longint;
  9.         q : array [1..10000,1..2] of longint;
  10.         was : array [1..1000] of boolean;
  11.       begin
  12.         fillchar(was,sizeof(was),false);
  13.         fillchar(q,sizeof(q),0);
  14.         qb:=1;
  15.         qe:=0;
  16.         inc(qe);
  17.         q[qe,1]:=x;
  18.         q[qe,2]:=0;
  19.         was[x]:=true;
  20.         while (qe>=qb) do begin
  21.           x:=q[qb,1];
  22.           sn:=q[qb,2];
  23.           inc(qb);
  24.           inc(sn);
  25.           x:=u[x];
  26.           while (x<>0) do begin
  27.             if (not was[v[x]])
  28.               then begin
  29.                 if (v[x]=f)
  30.                   then begin
  31.                     bfs:=sn;
  32.                     exit;
  33.                   end;
  34.                 inc(qe);
  35.                 q[qe,1]:=v[x];
  36.                 q[qe,2]:=sn;
  37.                 was[v[x]]:=true;
  38.               end;
  39.             x:=pred[x];
  40.           end;
  41.         end
  42.       end;
  43.      
  44.      
  45.       procedure add(x,y : longint);
  46.       begin
  47.         inc(cnt);
  48.         v[cnt]:=y;
  49.         pred[cnt]:=u[x];
  50.         u[x]:=cnt;
  51.       end;
  52.      
  53.     begin
  54.       assign(input,'input.txt'); reset(input);
  55.       assign(output,'output.txt'); rewrite(output);
  56.       readln(n,m);
  57.       for i:=1 to m do begin
  58.         readln(x,y);
  59.         add(x,y);
  60.         add(y,x);
  61.       end;
  62.       readln(s,f);
  63.       writeln(bfs(s,f));
  64.       close(input); close(output);
  65.     end.
Add Comment
Please, Sign In to add comment