Cod sursa(job #693781)

Utilizator andrei_toaderToader Andrei Sorin andrei_toader Data 27 februarie 2012 16:41:30
Problema Algoritmul lui Dijkstra Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.91 kb
program dijkstra;
var f,g:text;
    n,m,i,j,poz1,poz2,cost:longint;
    a:array[1..5000,1..5000] of integer;
    d:array[1..50000] of longint;
    viz:array[1..50000] of 0..1;
    min,poz:longint;

begin
 assign (f,'dijkstra.in'); reset (f);
 assign (g,'dijkstra.out'); rewrite (g);
 readln (f,n,m);
 for i:=1 to n do
  for j:=1 to n do
   a[i,j]:=maxint;
 for i:=1 to m do
 begin
  readln (f,poz1,poz2,cost);
  a[poz1,poz2]:=cost;
 end;
 for i:=2 to n do
  d[i]:=a[1,i];
 viz[1]:=1;
 for i:=1 to n-1 do
 begin
  min:=maxlongint;
  for j:=1 to n do
   if viz[j]=0 then
    if d[j]<min then
    begin
     min:=d[j];     poz:=j;
    end;
   viz[poz]:=1;
   for j:=1 to n do
    if viz[j]=0 then
     if d[j]>d[poz]+a[poz,j] then
      d[j]:=d[poz]+a[poz,j];
 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.