Cod sursa(job #254827)

Utilizator TudorutzuMusoiu Tudor Tudorutzu Data 7 februarie 2009 18:16:58
Problema Algoritmul lui Dijkstra Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.1 kb
var sel:array[1..20000] of boolean;
    a:array[1..20000,1..20000] of longint;
    i,nod,n,m,j,min:longint;
    f,g:text;
    d:array[1..20000] of longint;
procedure load;
var i,x,y,z:longint;
begin
     assign(f,'dijkstra.in'); reset(f);
     assign(g,'dijkstra.out'); rewrite(g);
     readln(f,n,m);
     for i:=1 to n do
          for j:=1 to n do
               if i<>j then a[i,j]:=1 shl 30;
     for i:=1 to m do
     begin
          readln(f,x,y,z);
          a[x,y]:=z;
     end;
end;
begin
     load;
     for i:=1 to n do d[i]:=1 shl 30;
     d[1]:=0;
     fillchar(sel,sizeof(sel),false);
     while true do
     begin
          min:=1 shl 30;
          for i:=1 to n do
               if (min>d[i])and(sel[i]=false) then
               begin
                    min:=d[i];
                    nod:=i;
               end;
          sel[nod]:=true;
          if min=1 shl 30 then break;
          for i:=1 to n do
             if i<>nod then
               if d[nod]+a[nod,i]<d[i] then d[i]:=d[nod]+a[nod,i];
     end;
     for i:=2 to n do write(g,d[i],' ');
     close(g);
end.