Cod sursa(job #896728)

Utilizator elffikkVasile Ermicioi elffikk Data 27 februarie 2013 16:58:13
Problema Algoritmul lui Dijkstra Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.87 kb
const infinit=1000000000;
var v:array[1..3,1..250000]of longint;
    a:array[1..50000]of longint;
    n,m:longint;
    
procedure init;
var f:text; i:longint;
begin
  assign(f,'dijkstra.in');
  reset(f);
  readln(f,n,m);
  for i:=1 to m do read(f,v[1,i],v[2,i],v[3,i]);
  close(f);  
end;


procedure solve;
var i:longint; k:longint;
begin
  a[1]:=0;
  for i:=2 to n do a[i]:=infinit;
  k:=1;
  while k<>0 do
  begin
    k:=0;
    for i:=1 to m do 
    begin
      if a[v[1,i]]>a[v[2,i]]+v[3,i] then begin a[v[1,i]]:=a[v[2,i]]+v[3,i]; inc(k); end;
      if a[v[2,i]]>a[v[1,i]]+v[3,i] then begin a[v[2,i]]:=a[v[1,i]]+v[3,i]; inc(k); end;
    end;
  end;
end;

procedure finish;
var i:longint; f:text;
begin
  assign(f,'dijkstra.out');
  rewrite(f);
  for i:=2 to n do write(f,a[i],' '); 
  close(f);
end;
    
begin
  init;
  solve;
  finish;
end.