Cod sursa(job #246924)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 21 ianuarie 2009 21:22:01
Problema BFS - Parcurgere in latime Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 0.73 kb
var f,g:text;
viz,c:array[1..1000000] of longint;
a:array[1..100000,1..10000] of 0..1;
j,l,u,m,s,n,i,p,uc,x,y,pc:longint;
begin
assign(f,'bfs.in');
reset(f);
readln(f,n,m,s);
for i:=1 to m do
  begin
  readln(f,x,y);
  a[x,y]:=1;
  end;
for i:=1 to n do
viz[i]:=-1;
pc:=1;
uc:=1;
c[pc]:=s;
y:=1;
while pc<=uc do
 begin
   l:=pc;
   u:=uc;
   for j:=l to u do
   begin
   x:=c[j];
   for i:=1 to n do
         if (a[x,i]=1) and (viz[i]=-1) then
            begin
            uc:=uc+1;
            c[uc]:=i;
            viz[i]:=y;
          end;
   end;
   y:=y+1;
   pc:=u+1;
 end;
assign(g,'bfs.out');
rewrite(g);
if viz[s]>0 then viz[s]:=0;
for i:=1 to n do
        write(g,viz[i],' ');
close(g);
end.