Cod sursa(job #898939)

Utilizator andrei_toaderToader Andrei Sorin andrei_toader Data 28 februarie 2013 12:14:44
Problema Algoritmul lui Dijkstra Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 1.08 kb
program aglahkghaghah;
type hacking=record
 nod,cost:longint;
end;
var f,g:text;
     n,m,i,j,ps,pi:longint;
     a:array of array of hacking;
     cd:array[1..50000] of longint;
     bufin,bufout:array[1..65000] of byte;
     x,y,z,wnod,wcost,nr:longint;
     d:array[1..50000] of longint;

begin
 assign (f,'dijkstra.in'); reset (f);
 assign (g,'dijkstra.out'); rewrite (G);
 settextbuf (f,bufin);
 settextbuf (g,bufout);
 readln (f,n,m);
 setlength (a,n+1,1);
 for i:=1 to m do
 begin
  readln (f,x,y,z);
  setlength(a[x],length(a[x])+1);
  inc(a[x,0].nod);
  a[x,a[x,0].nod].nod:=y;
  a[x,a[x,0].nod].cost:=z;
 end;
 for i:=2 to n do
  d[i]:=maxlongint;
 ps:=0; pi:=1;
 cd[1]:=1;
 while ps<pi do
 begin
  inc(ps);
  nr:=cd[ps];
  for i:=1 to a[nr,0].nod do
  begin
   wnod:=a[nr,i].nod;
   wcost:=a[nr,i].cost;
   if d[wnod]>d[nr]+wcost then
   begin
    inc(pi);
    d[wnod]:=d[nr]+wcost;
    cd[pi]:=wnod;
   end;
  end;
 end;
 for i:=2 to n do
 begin
    if d[i]=maxlongint then d[i]:=0;
    write (g,d[i],' ');
 end;
 close (f); close (g);
end.