Cod sursa(job #536123)

Utilizator david93Demeny David david93 Data 18 februarie 2011 11:51:24
Problema Algoritmul lui Dijkstra Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.04 kb
uses crt;
type kl=array[1..50000,1..50000] of longint;
 op=array[1..50000] of longint;
var
 x:kl;
 j2,d,v,o:op;
 f,g:text;
 a,b,c,d2,m,n,i,j,c2,min,p:longint;
begin
 assign(f,'be.txt');
 reset(f);
 assign(g,'ki.txt');
 rewrite(g);
 readln(f,m,n);
 for i:=1 to n do
  begin
   read(f,a,b,c2);
   x[a,b]:=c2;
   x[b,a]:=c2;
  end;
 for i:=1 to n do
   for j:=1 to n do
     if (x[i,j]=0)and(i<>j)then x[i,j]:=30000;
 j2[c]:=1;
 for i:=1 to m do
  begin
   if i<>1 then o[i]:=1;
   d[i]:=x[1,i];
  end;
 for i:=1 to m-1 do
   begin
     min:=30000; p:=0;
     for j:=1 to m do
       if (d[j]<min)and(j2[j]<>1)
         then begin min:=d[j];p:=j;end;
         j2[p]:=1;
         for j:=1 to m do
           if (x[p,j]+d[p]<d[j] ) then begin d[j]:=x[p,j]+d[p];o[j]:=p;end;

   end;
  for i:=2 to m do
   write(g,d[i],' ');
 {v[1]:=d2;
 a:=1;

 while o[v[a]]<>0 do
   begin
     inc(a);
     v[a]:=o[v[a-1]];

   end;
 v[a]:=o[v[a-1]];
 for i:=a downto 1 do
  write(g,v[i],'-');   }
 close(f);
 close(g);
end.