Cod sursa(job #1502527)

Utilizator ili226Vlad Ilie ili226 Data 14 octombrie 2015 19:19:01
Problema BFS - Parcurgere in latime Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 0.93 kb
type nd=^nod;
     nod=record
	  val:longint;
          next:nd
         end;
     graf=array[1..100003]of nd;
var g:graf;
    f:text;
    j,n,m,i,x,y,s:longint;
    p:nd;
    viz:array[1..100003]of boolean;
    cost,coada:array[1..100003]of longint;
begin
assign(f,'bfs.in');
reset(f);
readln(f,n,m,s);
for i:=1 to m do
 begin
  readln(f,x,y);
  new(p);
  p^.val:=y;
  p^.next:=g[x];
  g[x]:=p;
 end;
close(f);
{for i:=1 to n do cost[i]:=-1;}
x:=0;y:=1;
coada[y]:=s;
cost[s]:=0;
viz[s]:=true;
repeat
inc(x);
p:=g[coada[x]];
while p<>nil do
 begin
  if not viz[p^.val] then
   begin
    viz[p^.val]:=true;
    inc(y);
    coada[y]:=p^.val;
    cost[p^.val]:=cost[coada[x]]+1;
   end;
  p:=p^.next;
 end;
until x=y;
assign(f,'bfs.out');
rewrite(f);
for i:=1 to n do
 if cost[i]<>0 then write(f,cost[i],' ')
               else if i<>s then write(f,'-1 ') else write(f,cost[i],' ');
close(f);
end.