#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<<"最小生成樹的權值為:"<