const
dim=6;
max=200;
var
cost:array[1..dim,1..dim] of integer;
i,j:integer;
isfound:array[1..dim] of boolean;
distance:array[1..dim] of integer;
v0:integer;
vtemp:integer;
min:integer;
counter:integer;
c:integer;
begin
writeln('*** result ***');
assign(input,'in.txt');
reset(input);
for i:=1 to 6 do
begin
for j:=1 to 6 do
begin
read(input,cost[i,j]);
write(cost[i,j]:5);
end;
writeln;
end;
{init}
v0:=1;
for i:=1 to dim do
begin
distance[i]:=cost[v0,i];
isfound[i]:=false;
end;
distance[v0]:=0;
isfound[v0]:=true;
{search}
for counter:=1 to dim do
begin
min:=max;
for i:=1 to dim do
begin
if (distance[i]<min) and (not isfound[i]) then
{if there is a path though i,j}
begin
min:=distance[i];
vtemp:=i;
end;
end;
writeln;
isfound[vtemp]:=true;
{update}
for i:=1 to dim do
begin
if (min+cost[vtemp,i]<distance[i]) and (not isfound[i]) then
begin
distance[i]:=min+cost[vtemp,i];
for c:=1 to dim do
begin
write(distance[c]:5);
end;
writeln;
end;
end;
end;
for i:=1 to dim do
begin
write(isfound[i]:5);
end;
writeln;
for i:=1 to dim do
begin
write(distance[i]:5);
end;
writeln;
readln;
end.
dijkstra算法(Pascal描述)
最新推荐文章于 2024-08-13 17:15:43 发布
这是一个使用Pascal语言实现的Dijkstra最短路径算法。程序首先读取二维矩阵`cost`的输入数据,初始化距离数组`distance`,然后通过循环寻找并更新最短路径,最终输出每个节点的最短距离和是否已被找到的状态。
摘要由CSDN通过智能技术生成