第十三周 项目1最小生成树的普里姆算法
2016-12-02 10:13
274 查看
main.cpp
[cpp] view
plain copy
/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:图(2).cpp
作 者: 陈朋
完成日期:2016年12月2日
版 本 号:v1.0
问题描述:
输入描述:无
程序输出:若干
*/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
void Prim(MGraph g,int v)
{
int lowcost[MAXV]; //顶点i是否在U中
int min;
int closest[MAXV],i,j,k;
for (i=0; i<g.n; i++) //给lowcost[]和closest[]置初值
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for (i=1; i<g.n; i++) //找出n-1个顶点
{
min=INF;
for (j=0; j<g.n; j++) //在(V-U)中找出离U最近的顶点k
if (lowcost[j]!=0 && lowcost[j]<min)
{
min=lowcost[j];
k=j; //k记录最近顶点的编号
}
printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);
lowcost[k]=0; //标记k已经加入U
for (j=0; j<g.n; j++) //修改数组lowcost和closest
if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])
{
lowcost[j]=g.edges[k][j];
closest[j]=k;
}
}
}
int main()
{
MGraph g;
int A[6][6]=
{
{0,6,1,5,INF,INF},
{6,0,5,INF,3,INF},
{1,5,0,5,6,4},
{5,INF,5,0,INF,2},
{INF,3,6,INF,0,6},
{INF,INF,4,2,6,0}
};
ArrayToMat(A[0], 6, g);
printf("最小生成树构成:\n");
Prim(g,0);
return 0;
}
[cpp] view
plain copy
/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:图(2).cpp
作 者: 陈朋
完成日期:2016年12月2日
版 本 号:v1.0
问题描述:
输入描述:无
程序输出:若干
*/
#include <stdio.h>
#include <malloc.h>
#include "graph.h"
void Prim(MGraph g,int v)
{
int lowcost[MAXV]; //顶点i是否在U中
int min;
int closest[MAXV],i,j,k;
for (i=0; i<g.n; i++) //给lowcost[]和closest[]置初值
{
lowcost[i]=g.edges[v][i];
closest[i]=v;
}
for (i=1; i<g.n; i++) //找出n-1个顶点
{
min=INF;
for (j=0; j<g.n; j++) //在(V-U)中找出离U最近的顶点k
if (lowcost[j]!=0 && lowcost[j]<min)
{
min=lowcost[j];
k=j; //k记录最近顶点的编号
}
printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);
lowcost[k]=0; //标记k已经加入U
for (j=0; j<g.n; j++) //修改数组lowcost和closest
if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])
{
lowcost[j]=g.edges[k][j];
closest[j]=k;
}
}
}
int main()
{
MGraph g;
int A[6][6]=
{
{0,6,1,5,INF,INF},
{6,0,5,INF,3,INF},
{1,5,0,5,6,4},
{5,INF,5,0,INF,2},
{INF,3,6,INF,0,6},
{INF,INF,4,2,6,0}
};
ArrayToMat(A[0], 6, g);
printf("最小生成树构成:\n");
Prim(g,0);
return 0;
}
相关文章推荐
- 第十三周项目1最小生成树的普里姆算法
- 第十三周项目1—验证算法(最小生成树的普里姆算法)
- 第十三周 图(二) 项目1 最小生成树的普里姆算法
- 第十三周 项目1最小生成树的普里姆算法
- 第十三周 项目1 -验证算法 --验证最小生成树的普里姆算法
- 第十三周 项目一 最小生成树的普里姆算法
- 第十三周项目--验证算法--1验证最小生成树的普里姆算法
- 第十三周 项目1 最小生成树的普里姆算法
- 第十三周 项目1 -验证算法 --验证最小生成树的普里姆算法
- 第十三周项目1—最小生成树的Prim算法
- 第十二周项目1-最小生成树的普里姆算法
- 第14周—项目1 验证最小生成树的普里姆算法
- 第十三周 项目2最小生成树的克鲁斯卡尔算法
- 第十三周 项目二 最小生成树的克鲁斯卡尔算法
- 第十三周 项目1 最小生成树的普利姆算法
- 第十三周 项目1-验证算法-验证最小生成树的普利姆算法
- 第十二周项目一 - 验证最小生成树的普里姆算法
- 第十三周项目1最小生成树的克鲁斯卡尔算法
- 第十三周项目2—最小生成树的Kruskal算法
- 第十三周--最小生成树的普里姆算法