Pagini recente » Cod sursa (job #2711702) | Cod sursa (job #1361841) | Cod sursa (job #2753494) | Cod sursa (job #2787153) | Cod sursa (job #257235)
Cod sursa(job #257235)
type point=^nod;
nod=record
inf:integer;
leg:point;
end;
var sel:array[1..100000] of boolean;
d,coada:array [1..100000] of integer;
a:array[1..100000] of point;
p:point;
f,g:text;
n,m,s,i,j,x,y,dr:longint;
procedure eu;
var st,dr:integer;
begin
st:=1;dr:=1;
sel[s]:=true;
coada[1]:=s;
d[s]:=0;
while st<=dr do
begin
p:=a[coada[st]];
while p<>nil do
begin
if sel[p^.inf]=false then
begin
inc(dr);
coada[dr]:=p^.inf;
sel[p^.inf]:=true;
d[p^.inf]:=d[coada[st]]+1;
end;
p:=p^.leg;
end;
inc(st);
end;
end;
begin
assign(f,'bfs.in');reset(f);
assign(g,'bfs.out');rewrite(g);
read(f,n,m,s);
for i:=1 to n do a[i]:=nil;
for i:=1 to m do
begin
read(f,x,y);
new(p);p^.inf:=y;p^.leg:=a[x];
a[x]:=p;
end;
for i:=1 to n do d[i]:=-1;
fillchar(sel,n,false);
eu;
for i:=1 to n do
write(g,d[i],' ');
writeln(g);
close(g);
end.