Cod sursa(job #674592)

Utilizator mada0222Tomus Madalina mada0222 Data 6 februarie 2012 15:52:09
Problema Algoritmul lui Dijkstra Scor 80
Compilator fpc Status done
Runda Arhiva educationala Marime 1.19 kb
program sss;
type e=record
    nod,cost:longint;
    end;
var f,g:text;
    n,m,i,j,wnod,wcost,z,y,x,nr,pi,ps:longint;
    a:array of array of e;
    d,q:array[1..50005] of longint;
begin
assign(f,'dijkstra.in'); reset(f);
assign(g,'dijkstra.out'); rewrite(g);
  readln(f,n,m);
  setlength(a,n+1);
  for i:=1 to n do
    setlength(a[i],1);
  for i:=1 to m do
    begin
      readln(f,x,y,z);
      setlength(a[x],length(a[x])+1);
      a[x,0].nod:=a[x,0].nod+1;
      a[x,a[x,0].nod].nod:=y;
      a[x,a[x,0].nod].cost:=z;
    end;
  pi:=1;
  ps:=1;
  q[ps]:=1;
  d[1]:=0;
  for i:=2 to n do
    d[i]:=maxint;
    while ps<=pi do
      begin
        nr:=q[ps];
        ps:=ps+1;
          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
                  d[wnod]:=d[nr]+wcost;
                  pi:=pi+1;
                  q[pi]:=wnod;
                  end;
            end;
      end;
      for i:=2 to n do
      begin
        if d[i]=maxint then
          d[i]:=0;
          write(g,d[i],' ');
      end;

close(f);
close(g);
end.