Cod sursa(job #282014)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 16 martie 2009 19:15:35
Problema BFS - Parcurgere in latime Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.96 kb
program bfs;

type point=^nod;
     nod=record
        urm:point;
        val:longint;
     end;

var a:array[1..100000] of point;
    f,g:text;
    v:array[1..100000] of longint;
    fol:array[1..100000] of longint;
    x,y,n,m,i,nr_tot:longint;
    p:point;

begin
 assign(f,'bfs.in'); reset(f);
 assign(g,'bfs.out'); rewrite(g);
 read(f,n,m,v[1]);
 for i:=1 to m do begin
        read(f,x,y);
        new(p);
        p^.urm:=a[x]; p^.val:=y; a[x]:=p;
 end;
 for i:=1 to n do
        fol[i]:=-1;
 i:=1; nr_tot:=1;
 fol[v[1]]:=0;
 while i<=nr_tot do begin
        p:=a[v[i]];
        while p<>NIL do begin
                if fol[p^.val]=-1 then begin
                        inc(nr_tot);
                        v[nr_tot]:=p^.val;
                        fol[p^.val]:=fol[v[i]]+1;
                end;
                p:=p^.urm;
        end;
        i:=i+1;
 end;
 for i:=1 to n do
        write(g,fol[i],' ');
 close(f); close(g);
end.