- 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.
|