根据PRIM算法构造最小生成树怎么确定出发点?

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:39:06
根据PRIM算法构造最小生成树怎么确定出发点?
一楼,我问的不是这个啊。

用pascal语言的,可以转成C++很容易的
首先定义数据类型:
type adjmatrix=array [1..n,1..n] of real;
//定义一个n*n的矩阵类型adjmatrix,以便存储邻接矩阵//
edge=record
beg,en:1..n;
length:real;
end;
//定义边的存储结构为edge,其中beg是边的起点, en 是边的终点,length是边的权值//
treetype=array [1..n-1] of edge;
//定义一个基类型为edge的数组类型 treetype,其元素个数为n-1个//
var net:adjmatrix;
//定义一个adjmatrix类型的变量net,图的邻接矩阵就存放在net中//
tree:treetype;
//定义一个treetype类型的变量tree,tree中可以存放n-1条边的信息,包括起点、终点及权值。在算法结束后,最小生成树的n-1 条边就存放在tree中//
算法如下(设n为构造的出发点):
procedure prim(net:adjmatrix;var tree:treetype);
//过程首部.参数的含义是:值参数net传递图的邻接矩阵,变参tree指明最小生成树的存放地址//
begin
for v:=1 to n-1 do
//此循环将顶点n与图中其它n-1个顶点形成的n-1条边存放在变量tree中//
[tree[v].beg:=n;
tree[v].en:=v;
tree[v].length:=net[v]]
for