Cod sursa(job #347797)

Utilizator florin_marius90Florin Marius Popescu florin_marius90 Data 13 septembrie 2009 13:02:27
Problema BFS - Parcurgere in latime Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1.11 kb
type nod=^node;
    node=record
         x,cost:longint;
         next:nod;
         end;
var d:array[1..1000] of nod;
    costitza:array[1..1000] of longint;
    sol:array[1..1000] of longint;
    i,n,w,t,m,s,a,b,c:longint;
    f,g:text;
    p,q:nod;
function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end;
begin
assign(f,'bfs.in'); reset(f);
assign(g,'bfs.out'); rewrite(g);
readln(f,n,m,s);
for i:=1 to n do costitza[i]:=-1;
for i:=1 to m do
 begin
 readln(f,a,b);
  new(p);
 p^.x:=b;
 p^.cost:=1;
 p^.next:=d[a];
 d[a]:=p;
 {new(p);
 p^.x:=a;
 p^.next:=d[b];
 d[b]:=p;}
 end;
 i:=1; t:=1; sol[i]:=s;   costitza[s]:=0;
 while i<=t do
  begin
  w:=sol[i];
  q:=d[w];
  while  q<>nil do
   begin
   if costitza[q^.x]=-1 then begin t:=t+1; sol[t]:=q^.x;
                                   costitza[q^.x]:=costitza[w]+1;
                                     end  ;
   { else begin costitza[q^.x]:=min(costitza[q^.x],costitza[w]+q^.cost) end;}
   q:=q^.next;
   end;
   i:=i+1;

  end;
for i:=1 to n do
 write(g,costitza[i],' ');
 close(f); close(g); end.