Cod sursa(job #591673)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 25 mai 2011 01:02:18
Problema Algoritmul lui Dijkstra Scor 90
Compilator fpc Status done
Runda Arhiva educationala Marime 0.99 kb
var     a:array[1..3,1..250000]of longint;
        b:array[1..50000] of longint;
        n,m,i,j:longint;
        bb:boolean;
        f,g:text;

{procedure rec(p,s:longint);
var     i:longint;
begin
  if (v[a[2,p]]=0)or(v[a[2,p]]>s) then v[a[2,p]]:=s;
  for i:=1 to m do
    if a[1,i]=a[2,p] then rec(i,s+a[3,i]);
end;}
begin
  assign(f,'dijkstra.in');
  assign(g,'dijkstra.out');
  reset(f);
  rewrite(g);
  readln(f,n,m);
  for i:=1 to m do
  for j:=1 to 3 do
    read(f,a[j,i]);
 { for i:=1 to m do
    if a[1,i]=1 then
      rec(i,a[3,i]);}

  for i:=1 to n do
    b[i]:=-1;
  b[1]:=0;
  bb:=true;
  while bb do
    begin
      bb:=false;
      for i:=1 to m do
        if (b[a[1,i]]<>-1)and((b[a[2,i]]=-1)or(b[a[2,i]]>b[a[1,i]]+a[3,i]))
          then
            begin
              b[a[2,i]]:=b[a[1,i]]+a[3,i];
              bb:=true;
            end;
    end;

  for i:=2 to n do
    if b[i]<>-1 then
    write(g,b[i],' ') else write(g,0,' ');
  close(g);
end.