Cod sursa(job #743094)

Utilizator ScriamTertiuc Afanasie Scriam Data 3 mai 2012 09:24:45
Problema Algoritmul lui Dijkstra Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.98 kb
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.