Pagini recente » Cod sursa (job #881451) | Cod sursa (job #701828) | Cod sursa (job #352841) | Cod sursa (job #2428406) | Cod sursa (job #155915)
Cod sursa(job #155915)
type matr=array[1..100,1..100]of integer;
sir=array[1..100]of integer;
var a:matr;d:sir;
f,g:text;
n,m,i,j,x,y,c:integer;
procedure citire;
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]:=1001;
for i:=1 to m do begin
readln(f,x,y,c);
a[x,y]:=c
end;
end;
procedure marcare(x:byte);
var c:set of byte;
min,k:integer;
begin
c:=[1..n]-[x];
for i:=1 to n do
if i in c then d[i]:=a[x,i];
for k:=1 to n-1 do begin
min:=1001;
for i:=1 to n do
if (i in c)and (d[i]>0)and(d[i]<min)then begin
min:=d[i];
j:=i
end;
c:=c-[j];
if j=x then break;
for i:=1 to n do
if i in c then
if a[j,i]<>1001 then
if (d[i]> d[j]+a[j,i])then d[i]:=d[j]+a[j,i];
end;
for i:=2 to n do
if d[i]<>1001 then write(g,d[i],' ')
else write(g,0)
end;
begin citire;
marcare(1);
close(g)
end.