Pagini recente » Cod sursa (job #2760688) | Cod sursa (job #1914930) | Cod sursa (job #40521) | Cod sursa (job #2825848) | Cod sursa (job #559942)
Cod sursa(job #559942)
type mat=array[1..1000,1..1000] of integer;
vek=array[1..10000] of integer;
vak=array[1..10000] of boolean;
var f:text; x:mat; v:vek; jr:vak; i,j,n,m,c,a,b:integer;
procedure dijk(k:integer);
var i,min,mi:integer;
begin
jr[k]:=true;
for i:=1 to n do
if (x[k,i]<>-1)and(not jr[i])and(x[k,i]+v[k]<v[i]) then
begin v[i]:=v[k]+x[k,i]; end;
min:=1111;
for i:=1 to n do
if (v[i]<min) and not jr[i] then begin min:=v[i]; mi:=i; end;
if mi<>n then dijk(mi);
end;
begin
assign(f,'dijkstra.in');
reset(f);
readln(f,n,m);
for i:=1 to m do begin
readln(f,a,b,c);
if c<>0 then begin x[a,b]:=c; x[b,a]:=c; end
else x[a,b]:=1111;
end;
close(f);
for i:=1 to n do
for j:=1 to n do
if x[i,j]=1111 then x[i,j]:=0
else if x[i,j]=0 then x[i,j]:=-1;
for i:=1 to n do jr[i]:=false;
for i:=2 to n do v[i]:=1111;
dijk(1);
assign(f,'dijkstra.out');
rewrite(f);
for i:=2 to n do
write(f,v[i],' ');
close(f);
end.