Pagini recente » Cod sursa (job #2751314) | Cod sursa (job #2671431) | Cod sursa (job #1736752) | Cod sursa (job #910769) | Cod sursa (job #163925)
Cod sursa(job #163925)
program dijkstra;
var A : array [1..10000,1..10000] of integer;
S,T,D : array [1..10000] of integer;
n,m,i,j,poz,min,x,y,r : integer;
f,g : text;
begin
assign(f,'dijkstra.in');
reset(f);
assign(g,'dijkstra.out');
rewrite(g);
readln(f,n,m);
for i := 1 to n-1 do
for j := i+1 to n do begin
A[i,j] := 30000;
A[j,i] := A[i,j];
end;
for i := 1 to m do begin
read(f,x,y);
readln(f,A[x,y]);
end;
for i := 1 to n do begin
S[i] := 0;
T[i] := 0;
A[i,i] := 0;
end;
r := 1;
S[r] := 1;
for i := 1 to n do begin
D[i] := A[r,i];
if i<>r then
if D[j]<30000 then T[i] := r;
end;
for i := 1 to n-1 do begin
min := 30000;
for j := 1 to n do
if S[j]=0 then
if D[j]<min then begin
min := D[j];
poz := j;
end;
S[poz] := 1;
for j := 1 to n do
if S[j]=0 then
if D[j]>D[poz]+A[poz,j] then begin
D[j] := D[poz]+A[poz,j];
T[j] := poz;
end;
end;
for i := 2 to n do
if D[i]=30000 then write(f,0,' ')
else write(g,D[i],' ');
close(f);
close(g);
end.