当前位置: 编程技术>c/c++/嵌入式
纯C语言:贪心Prim算法生成树问题源码分享
来源: 互联网 发布时间:2014-10-23
本文导语: 代码如下:#include #define MAX 100#define MAXCOST 100000int graph[MAX][MAX];int Prim(int graph[MAX][MAX], int n){ /* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */ int lowcost[MAX]; /* mst[i]记录对应lowcost[i]的起点 */ int mst[...
代码如下:
#include
#define MAX 100
#define MAXCOST 100000
int graph[MAX][MAX];
int Prim(int graph[MAX][MAX], int n)
{
/* lowcost[i]记录以i为终点的边的最小权值,当lowcost[i]=0时表示终点i加入生成树 */
int lowcost[MAX];
/* mst[i]记录对应lowcost[i]的起点 */
int mst[MAX];
int i, j, min, minid, sum = 0;
/* 默认选择0号节点加入生成树,从1号节点开始初始化 */
for (i = 1; i < n; i++)
{
/* 最短距离初始化为其他节点到0号节点的距离 */
lowcost[i] = graph[0][i];
/* 标记所有节点的起点皆为默认的0号节点 */
mst[i] = 0;
}
/* 标记0号节点加入生成树 */
lowcost[0] = 0;
/* n个节点至少需要n-1条边构成最小生成树 */
for (i = 1; i < n; i++)
{
min = MAXCOST;
minid = 0;
/* 找满足条件的最小权值边的节点minid */
for (j =1; j