Cod sursa(job #559928)

Utilizator boardkingLazar Zsolt boardking Data 18 martie 2011 10:51:26
Problema Algoritmul lui Dijkstra Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 0.96 kb
uses crt;
type mx=array[1..150,1..150] of integer;
     vek=array[1..150] of integer;
var
 w:mx;
 jart,v,os:vek;
 i,kcs,mincs,min,n,m,c,akt,j,a,b:integer;
 f,g:text;
begin
clrscr;
assign(f,'dijkstra.in');
reset(f);
readln(f,n,m);
for i:= 1 to n do
for j:= 1 to n do
if i<>j then w[i,j]:=10000;

for i:=1 to m do
begin
  readln(f,a,b,c);
  w[a,b]:=c;
end;
for i:= 1 to n do
begin
for j:= 1 to n do
 write(w[i,j],' ');
writeln;
end;
writeln;
kcs:=1;
for i:= 1 to n do
begin
 os[i]:=kcs;
 v[i]:=w[kcs,i];
 jart[i]:=0;
end;
jart[kcs]:=1;
mincs:=kcs;
akt:=kcs;
for j:= 1 to n do
begin
min:=10000;
 for i:= 1 to n do
  if (v[i]<min) and (jart[i]=0) then
  begin
  mincs:=i;
  min:=v[i];
  end;
jart[mincs]:=1;
os[mincs]:=akt;
for i:= 1 to n do
 begin
  if min+w[mincs,i]<v[i] then v[i]:=min+w[mincs,i];
 end;
akt:=mincs;
end;
assign(g,'dijkstra.out');
rewrite(g);
for i:= 2 to n do
write (g,v[i],' ');
close(f);
close(g);
end.