Pagini recente » Cod sursa (job #932534) | Cod sursa (job #2186410) | Cod sursa (job #2507169) | Cod sursa (job #370773) | Cod sursa (job #670373)
Cod sursa(job #670373)
type lista=^pont;
pont=record
cs:longint;
kov:lista;
end;
xpont=record
cs,t:longint;
end;
var a:array[1..50001] of lista;
tav:array[1..50001] of longint;
x:array[1..50001] of xpont;
n,m,i,eleje,vege,kezd:longint;
p:lista;
f:text;
procedure betesz(var s:lista; cs:longint);
var uj:lista;
begin
new(uj);
uj^.cs:=cs;
if s=nil then begin
uj^.kov:=nil;
s:=uj;
end
else begin
uj^.kov:=s;
s:=uj;
end;
end;
begin
assign(f,'bfs.in');
reset(f);
readln(f,n,m,kezd);
for i:=1 to m do begin
readln(f,eleje,vege);
if (eleje<>vege) and (vege<>kezd) then betesz(a[eleje],vege);
end;
close(f);
for i:=1 to n do
tav[i]:=-1;
tav[kezd]:=0;
x[1].cs:=kezd;
x[1].t:=0;
eleje:=1;
vege:=1;
while eleje<=vege do begin
p:=a[x[eleje].cs];
while p<>nil do begin
inc(vege);
x[vege].cs:=p^.cs;
x[vege].t:=x[eleje].t+1;
tav[p^.cs]:=x[vege].t;
p:=p^.kov;
end;
inc(eleje);
end;
assign(f,'bfs.out');
rewrite(f);
for i:=1 to n do
write(f,tav[i],' ');
close(f);
end.