📄 spining_tree.pas
字号:
program spining_tree;
const max=99;
type
adjmatrix=array [1..30,1..30] of byte;
vertex=record
vex:byte;
lowcost:byte;
end;
var
closedge:array [1..30]of vertex;
gn:adjmatrix;
data:text;
name:string[10];
i,j,n,v,k:byte;
judge:char;
out:boolean;
procedure data_file_input;
begin
write('input filename first ("prim4.txt","prim6.txt" or "prim8.txt"):');
readln(name);
assign(data,name);
reset(data);
read(data,n);
writeln;
writeln(name:13);
writeln('n=':8,n:2); writeln;
for i:=1 to n do
for j:=1 to n do
read(data,gn[i,j]);
for i:=1 to n do
begin
for j:=1 to n do write(gn[i,j]:3);
writeln;
end;
end;
procedure closedge_initiate;
begin
for v:=2 to n do
with closedge[v] do
if not(gn[1,v]=0) then
begin
vex:=1 ; lowcost:=gn[1,v]
end
else lowcost:=max;
closedge[1].lowcost:=0;
end;
procedure find_next_vertex;
var min:byte;
procedure minimum(m:byte);
begin
for v:=1 to n do
with closedge[v] do
if (lowcost<m) and( lowcost>0) then
begin
m:=lowcost; min:=m;
k:=v;
end;
end;
begin
minimum(max);
writeln;
write('vertex:':10,'V':3,closedge[k].vex,'-->':4,'V':2,k,' ','arclength:',min:2);
closedge[k].lowcost:=0;
for v:=1 to n do with closedge[v] do
if (gn[k,v]<lowcost) and (gn[k,v]>0) then
begin
lowcost:=gn[k,v];
vex:=k;
end;
if i=n-1 then
begin
write('try again?(y/n):':28);
readln(judge);
if judge='n' then out:=true ;
writeln; writeln;
end;
end;
BEGIN
while not out do
begin
data_file_input;
closedge_initiate;
for i:=1 to n-1 do find_next_vertex;
end;
END.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -