#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 >m; /* 初始化图,所有节点间距离为无穷大 */ for (i = 0; i>n; graph[i][j] = n; graph[j][i] = n; } graph[i][i]=MAXCOST; } /* 求解最小生成树 */ cost = Prim(graph, m); cout<<"最小生成树的权值为:"<