intprim() { for (int i = 0; i < V; i++) { mincost[i] = INF; used[i] = false; } mincost[0] = 0; int res = 0; while (true) { int v = -1; //从不属于集合x的顶点中选取从x到权值最小的顶点 for (int u = 0; u < V; u++) { if (!used[u] && (v == -1 || mincost[u] < mincost[v])) v = u; } if (v == -1) break; used[v] = true;//把顶点v加入集合x res += mincost[v];//把边的长度加到结果 for (int u = 0; u < V; u++) { mincost[u] = min(mincost[u], cost[u][v]); } } return res; }