procedure prim(v0: Integer); var lowcost, closest: array[1..maxn] of Integer; i, j, k, Min: Integer; begin for i := 1 to n do begin lowcost[i] := cost[v0, i]; closest[i] := v0; end; for i := 1 to n - 1 do begin {寻找离生成树最近的未加入顶点k} Min := MaxLongint; for j := 1 to n do if (lowcost[j] < Min) and (lowcost[j] <> 0) then begin Min := lowcost[j]; k := j; end; lowcost[k] := 0; {将顶点k加入生成树} {生成树中增加一条新的边k到closest[k]} {修正各点的lowcost和closest值} for j := 1 to n do if cost[k, j] < lwocost[j] then begin lowcost[j] := cost[k, j]; closest[j] := k; end; end; end; //delphi/6604