Cod sursa(job #154941)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 11 martie 2008 16:48:13
Problema Algoritmul lui Dijkstra Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.18 kb
program dijkstra;
var A : array [1..30000,1..30000] of integer;
    S,T,D : array [1..30000] 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
write(g,D[i],' ');

close(f);
close(g);


end.