Cod sursa(job #631636)

Utilizator mada0222Tomus Madalina mada0222 Data 9 noiembrie 2011 10:57:37
Problema Algoritmul lui Dijkstra Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 1.56 kb
program graff;
type mada=record
   a,b,c:integer;
   end;
var f,g:text;
    n,m,i,j,min,poz:longint;
    a1:array[1..1000,1..1000] of integer;
    v:array[1..50000] of mada;
    s,d:array[1..1000] of integer;

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
     begin
        a1[i,j]:=maxint;
        a1[i,i]:=0;
     end;
      for i:=1 to m do
      begin
        readln(f,v[i].a,v[i].b,v[i].c);
        a1[v[i].a,v[i].b]:=v[i].c;
      end;
   {   for i:=1 to n do
      begin
         for j:=1 to n do
            begin
            write(g,a1[i,j],' ');
            end;
         writeln(g);
      end;   }
      s[1]:=1;
        for i:=1 to n do
           begin
           d[i]:=a1[1,i];

           end;
        for i:=1 to n-1 do
           begin
           min:=maxint;
              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]+a1[poz,j] then
              begin
              d[j]:=d[poz]+a1[poz,j];
              end;
         end;
        for i:=2 to n do
          write(g,d[i],' ');
      {   for i:=1 to n do
           if i<>1 then
             if t[i]<>0 then
                begin
                drum(i);
                end;     }
close(f);
close(g);
end.