
Untitled
By: a guest on
Apr 26th, 2012 | syntax:
Delphi | size: 0.87 KB | hits: 21 | 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]:=2000000000;
used[i]:=false;
end;
d[s]:=0;
d[0]:=2000000000;
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;
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[min,j];
end;
end;
write(d[f]);
readln;
readln;
end.