Cod sursa(job #902154)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 1 martie 2013 13:03:23
Problema Algoritmul lui Dijkstra Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.37 kb
//Dijkstra doar lungimile drumurilor de cost minim
//un singur varf de plecare -> start ; drumuri catre celelalte n-1 noduri
//O(n*m)
//90p infoarena
program dijkkk;
const infinit=1000000001;
type muchie=record
     x,y,cost:longint;
     end;
     vect=array[1..50001]of longint;
     vect_muchii=array[1..250001]of muchie;
var a:vect_muchii; d:vect;
    intrare,iesire:array[1..1 shl 17] of char;
    n,m:longint;
    f,g:text;
procedure initializare;
var i:longint;
begin
readln(f,n,m);
for i:=1 to m do readln(f,a[i].x,a[i].y,a[i].cost);
for i:=1 to n do d[i]:=infinit;
end;
procedure dijk;
var i:longint;ok:boolean;
begin
d[1]:=0;
ok:=true;
while ok do     begin
                ok:=false;
                for i:=1 to m do
                  if d[a[i].y]>d[a[i].x]+a[i].cost then begin
                                                        ok:=true;
                                                        d[a[i].y]:=d[a[i].x]+a[i].cost;
                                                        end;
                end;
end;
procedure afisare;
var i:longint;
begin
for i:=2 to n do
  if d[i]=infinit then write(g,'0 ')
                  else write(g,d[i],' ');
end;
begin
assign(f,'dijkstra.in');reset(f);  settextbuf(f,intrare);
assign(g,'dijkstra.out');rewrite(g);settextbuf(g,iesire);
initializare;
dijk;
afisare;
close(f);close(g);
end.