Pagini recente » Cod sursa (job #3179801) | Cod sursa (job #3167824) | Cod sursa (job #3227388) | Cod sursa (job #1378827) | Cod sursa (job #1629865)
const inf=1000000000;
var cost:array[1..100,1..100]of longint;
n,i,j:integer;
d,t:array[1..100]of longint;
s:array[1..100]of boolean;
f:text;
procedure citire;
var f:text;
m,i,j,x,y,k:integer;
begin
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
cost[i,j]:=0
else
cost[i,j]:=inf;
for i:=1 to m do
begin
readln(f,x,y,k);
cost[x,y]:=k;
end;
close(f);
end;
procedure initializare(x:integer);
var i:integer;
begin
for i:=1 to n do
begin
d[i]:=cost[x,i];
if cost[x,i]<inf then
t[i]:=x
else if i<>x then
t[i]:=0;
end;
s[x]:=true;
t[x]:=-1;
end;
procedure dijstra(x:integer);
var k,i,r:integer;
dmin:longint;
begin
for r:=1 to n-1 do
begin
dmin:=inf;
for i:=1 to n do
if (d[i]<dmin)and(not(s[i])) then
begin
dmin:=d[i];
k:=i;
end;
for i:=1 to n do
if d[i]>d[k]+cost[k,i] then
begin
d[i]:=d[k]+cost[k,i];
t[i]:=k;
end;
s[k]:=true;
end;
end;
begin
citire;
initializare(1);
dijstra(1);
assign(f,'dijkstra.out');rewrite(f);
for j:=2 to n do
write(f,d[j],' ');
close(f);
end.