Pagini recente » Cod sursa (job #2843773) | Cod sursa (job #1009649) | Cod sursa (job #2815082) | Cod sursa (job #2175706) | Cod sursa (job #1047075)
Program parcurgere_in_latime;
type drum=record
x,y:longint;
end;
rez=record
t,k:longint;
end;
var a:array[1..1000000] of drum;
q:array[1..1000000] of rez;
val:array[1..100000] of longint;
parcurs:array[1..100000] of boolean;
i,n,m,b,l,r:longint;
f,g:text;
BEGIN
assign(f,'BFS.in'); reset(f);
assign(g,'BFS.out'); rewrite(g);
read(f,n,m,b);
for i:=1 to m do
begin
read(f,a[i].x,a[i].y);
parcurs[i]:=false;
val[i]:=0;
end;
l:=1; r:=2;
val[b]:=0; parcurs[b]:=true; q[l].t:=b; q[l].k:=0;
while (l<r) do
begin
for i:=1 to m do
begin
if (a[i].x=q[l].t) then
if (not(parcurs[a[i].y])) then
begin
q[r].t:=a[i].y;
q[r].k:=q[l].k+1;
parcurs[a[i].y]:=true;
val[a[i].y]:=q[r].k;
inc(r);
end;
end;
inc(l);
end;
for i:=1 to n do
begin
if ((val[i]=0) and (i<>b)) then write(g,'-1 ')
else write(g,val[i],' ');
end;
close(f); close(g);
END.