Cod sursa(job #629175)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 2 noiembrie 2011 19:49:32
Problema Algoritmul lui Dijkstra Scor 10
Compilator fpc Status done
Runda gc_practice Marime 0.91 kb
Program dijkstra;
 type tip=record
        x,y,t:longint;
        end;
var a:array [0..250000] of tip;
     v:array [0..55000] of longint;
     b1,b2:array [1..1 shl 17] of char;
     n,m,i:longint;
     ok:boolean;
     fi,fo:text;
begin
 assign(fi,'dijkstra.in');
  assign(fo,'dijkstra.out');
 settextbuf(fi,b1);
  settextbuf(fo,b2);
 reset(fi); rewrite(fo);
 readln(fi,n,m);
  for i:=0 to m-1 do readln(fi,a[i].x,a[i].y,a[i].t);
  for i:=0 to n+2 do v[i]:=-1; v[1]:=0; ok:=true;
  while ok do begin
              ok:=false;
              for i:=0 to m-1 do
               if ((v[a[i].x]<>-1) and (v[a[i].y]=-1)) or (v[a[i].y]>v[a[i].x]+a[i].t) then
                begin
                 v[a[i].y]:=v[a[i].x]+a[i].t;
                 ok:=false;
                 end;
                 end;
  for i:=2 to n do
   if v[i]=-1 then write(fo,'0',' ')
    else write(fo,v[i],' ');
  close(fo);
 end.