Cod sursa(job #149065)

Utilizator DonPushmeMilitaru Adrian DonPushme Data 5 martie 2008 11:53:07
Problema Algoritmul lui Dijkstra Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.46 kb
const inf=32000;
type mat=array[1..100,1..100] of integer;
     vec=array[1..100] of longint;
var a:mat;
    d,v,t:vec;
    i,j,n,m,b,c,cost:integer;
    f,g:text;

procedure dijkstra(nod:integer);
var mini,min,i,j:integer;
begin
for i:=1 to n do
        d[i]:=inf;
d[nod]:=0;


for j:=1 to n do
        begin
        v[nod]:=1;

        for i:=1 to n do
                begin
                if (d[i]>d[nod]+a[nod,i]) then
                                        begin
                                        d[i]:=d[nod]+a[nod,i];
                                        t[i]:=nod;
                                        end;
                end;
        min:=inf;
        mini:=0;
        for i:=1 to n do
                if v[i]=0 then
                        if min>d[i] then
                                                begin
                                                min:=d[i];
                                                mini:=i;
                                                end;
        nod:=mini;
        end;

end;

begin {main}
assign(input,'dijkstra.in');reset(input);
assign(output,'dijkstra.out');rewrite(output);

read(n,m);
for i:=1 to n do
        for j:=1 to n do
                a[i,j]:=inf;
for i:=1 to m do
        begin
        read(b,c,cost);
        a[b,c]:=cost;
        a[c,b]:=cost;
        end;

dijkstra(1);

for i:=2 to n do
        write(d[i],' ');
close(input);
close(output);
end.