
Untitled
By: a guest on
Apr 29th, 2012 | syntax:
Delphi | size: 0.98 KB | hits: 18 | expires: Never
program Projectlevel;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
used : array[1..2000] of boolean;
d : array[0..2000] of integer;
arr : array[1..2000,1..2000] of integer;
i, n, j, s, f, min : integer;
begin
reset(input,'dijkstra.in');
rewrite(output,'dijkstra.out');
read(n,s,f);
for i:=1 to n do
begin
for j:=1 to n do
begin
read(arr[i,j]);
end;
d[i]:=1000000000;
used[i]:=false;
end;
d[s]:=0;
d[0]:=1000000000;
for i:=1 to n do
begin
min:=0;
for j:=1 to n do
begin
if (d[j]<d[min]) and (used[j]=false) then min:=j;
end;
used[min]:=true;
if min=0 then
begin
write(-1);
exit;
end;
for j:=1 to n do
begin
if (arr[min,j]>=0) and (d[j]>d[min]+arr[min,j]) then d[j]:=d[min]+arr[j,min];
end;
end;
if d[f]< 1000000 then write(d[f]);
readln;
readln;
end.