Pagini recente » Istoria paginii runda/iiot_5 | Atasamentele paginii Clasament rar6 | Diferente pentru calibrare-limite-de-timp intre reviziile 197 si 196 | Istoria paginii runda/rar6 | Cod sursa (job #1359933)
{Jugariu Mihai}
{BFS}
type adresa=^nod;
nod=record
nr:longint;
urm:adresa;
end;
var a:array[1..100000]of adresa;
viz,c,b:array[1..100000]of longint;
i,j,k,l,m,n,x,y:longint;
p:adresa;
f,g:text;
begin;
assign(f,'bfs.in');
reset(f);
assign(g,'bfs.out');
rewrite(g);
read(f,n,m,k);
for i:=1 to n do a[i]:=nil;
for i:=1 to m do
begin;
read(f,x,y);
if a[x]=nil then
begin;
new(a[x]);
a[x]^.nr:=y;
a[x]^.urm:=nil
end
else
begin;
new(p);
p^.nr:=y;
p^.urm:=a[x];
a[x]:=p;
end;
end;
for i:=1 to n do viz[i]:=-1;
b[1]:=k;
i:=0;l:=1;
c[1]:=0;
viz[k]:=0;
repeat
inc(i);
p:=a[b[i]];
x:=b[i];
if p<>nil then
repeat
if viz[p^.nr]=-1 then
begin;
inc(l);
b[l]:=p^.nr;
c[l]:=c[i]+1;
viz[p^.nr]:=c[l];
end;
p:=p^.urm;
until p=nil;
until i=l;
for i:=1 to n do write(g,viz[i],' ');
close(f);
close(g);
end.