prim 算法
以领接矩阵存储 图G
bool b[i]表示顶点i是否被访问,初始化时候memset(b,false,sizeof(b));
b[0]=value,表示从第0个节点开始。
用value[i] 表示节点i到最小生成树A中定点的最小距离。例如value[1]=a[0][1];
int sum记录权值和
int min判断最小权值,初始值要设置的大,例如 min = 0xffffff;
int temp记录插入最小生成树A的定点。
代码:
例如存好了邻接矩阵a[][];
memset(b,flase,sizeof(b));
b[0] = ture;
for(i=1; i < n;i++)
value[i] = a[0][i];
int sum;
for (i = 1; i < n; i++)
{
int min = 0xffffff;
int temp = 0;
for(j = 1; j < n; j++)
if(!b[j] && min > value[j])
{
min = value[i];
temp = j;
}
sum+=min;
b[temp] = true;
for(j = 1; j < n;j++)
{
if(!b[j] && value[j] > a[temp][j])
value[j] = a[temp][j];
}
}