Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <queue>#include <vector>#include <map>#define MAX_N 1000#define INF 32767using namespace std;int N;int cost[MAX_N][MAX_N]; // 邻接矩阵bool visited[MAX_N]; // 顶点是否加入当前最小生成树顶点集合Xint minCost[MAX_N]; // minCost[v] 表示从当前的生成树顶点集合X中到顶点v的最小权值int prim() {int res = 0;for (int i = 0; i < N; i++) {visited[i] = false;minCost[i] = INF;}minCost[0] = 0;while (true) {int v = -1;for (int i = 0; i < N; i++) {if (!visited[i] && (v == -1 || minCost[i] < minCost[v])) {v = i;}}