Cod sursa(job #255568)

Utilizator petrePajarcu Alexandru-Petrisor petre Data 9 februarie 2009 23:08:26
Problema BFS - Parcurgere in latime Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.83 kb
type nodi=^nod;
     nod=record
      vecin:longint;
      next:nodi;
      end;
var a:array[1..100000] of nodi;
n,i,j,k,l,m,s,x,y:longint;
niv,sol:array[1..100000] of longint;
c:nodi;
begin
assign(input,'bfs.in');
assign(output,'bfs.out');
reset(input);
rewrite(output);
read(n);
read(m);
read(s);
for i:=1 to m do
    begin
    read(x,y);
    new(C);
    C^.vecin:=y;
    C^.next:=a[x];
    a[x]:=c;
    end;
k:=1;
for i:=1 to  n do niv[i]:=-1;
sol[1]:=s;
niv[s]:=0;
i:=0;
while (k<n)and(i<k) do
begin
inc(i);
c:=a[sol[i]];
while c<>nil do
      begin
      l:=c^.vecin;
      if niv[l]=-1 then
         begin
         inc(k);
         sol[k]:=l;
         niv[l]:=niv[sol[i]]+1;
         end;
      c:=c^.next;
      end;
end;
for i:=1 to n do write(niv[i],' ');
close(input);
close(output);
end.