来自本人百度空间 2009-08-20 16:45
program short(input,output);
const maxint=100;
type point=set of 1..6;
var
GA:array[1..6,1..6] of integer;
a,b,c,d,i,j:integer;
dist:array[1..6] of integer;
path:array[1..6] of point;
s:point;
begin
assign(input,'short.in');
reset(input);
assign(output,'short.out');
rewrite(output); fillchar(ga,sizeof(ga),maxint);
while not(eof) do begin
readln(a,b,c);
ga[a,b]:=c;
end;{init}
close(input);
dist[1]:=0; path[1]:=[1];
for i:=2 to 6 do
if ga[1,i]<maxint then begin dist[i]:=ga[1,i]; path[i]:=[1]+[i]; end
else begin dist[i]:=maxint; path[i]:=[]; end;
s:=[1];
for i:=2 to 5 do begin
for j:= 2 to 6 do
if j<>i then
if dist[i]+ga[i,j]<dist[j] then begin
dist[j]:=dist[i]+ga[i,j];
path[j]:=path[j]+[i];
end;
end;
writeln(dist[6]);
d:=0;
for i:=1 to 6 do if (i in path[6]) then
begin
if d=0 then inc(d)
else write('------->');
write('C',i,' ');
end;
close(output);
end.
找例题做的,只做了从1到6……