Pagini recente » Cod sursa (job #2839489) | Cod sursa (job #491037) | Cod sursa (job #2225257) | Cod sursa (job #1164970) | Cod sursa (job #743094)
Cod sursa(job #743094)
Program dijk;
var a : array[1..5000,1..5000] of longint;
n,m : longint;
fout : text;
Procedure citire;
var fin : text;
i,x,y,z,j : longint;
begin
assign(fin,'dijkstra.in');
reset(fin);
readln(fin,n,m);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=0;
for i:=1 to m do
begin
readln(fin,x,y,z);
a[x,y]:=z;
a[y,x]:=z;
end;
close(fin);
end;
Procedure calc;
var b : array[1..5000] of boolean;
i,k,nc,pm,m1,min : longint;
d : array[1..5000] of longint;
begin
for i:=1 to n do
b[i]:=false;
k:=1;
for i:=1 to n do d[i]:=500000;
d[1]:=0;
nc:=1;
repeat
min:=50000000;
for i:=1 to n do
if (a[nc,i]>0) and (not b[i]) then
begin
m1:=d[nc]+a[nc,i];
if m1<d[i] then d[i]:=m1;
if d[i]<min then begin min:=d[i]; pm:=i; end;
end;
b[nc]:=true;
nc:=pm;
inc(k);
until k=n;
assign(fout,'dijkstra.out');
rewrite(fout);
for i:=2 to n do
write(fout,d[i],' ');
close(fout);
end;
begin
citire;
calc;
end.