Pagini recente » Cod sursa (job #2815101) | Cod sursa (job #1014152) | Cod sursa (job #2619386) | Cod sursa (job #2479314) | Cod sursa (job #255568)
Cod sursa(job #255568)
type nodi=^nod;
nod=record
vecin:longint;
next:nodi;
end;
var a:array[1..100000] of nodi;
n,i,j,k,l,m,s,x,y:longint;
niv,sol:array[1..100000] of longint;
c:nodi;
begin
assign(input,'bfs.in');
assign(output,'bfs.out');
reset(input);
rewrite(output);
read(n);
read(m);
read(s);
for i:=1 to m do
begin
read(x,y);
new(C);
C^.vecin:=y;
C^.next:=a[x];
a[x]:=c;
end;
k:=1;
for i:=1 to n do niv[i]:=-1;
sol[1]:=s;
niv[s]:=0;
i:=0;
while (k<n)and(i<k) do
begin
inc(i);
c:=a[sol[i]];
while c<>nil do
begin
l:=c^.vecin;
if niv[l]=-1 then
begin
inc(k);
sol[k]:=l;
niv[l]:=niv[sol[i]]+1;
end;
c:=c^.next;
end;
end;
for i:=1 to n do write(niv[i],' ');
close(input);
close(output);
end.