[code]#include #include using namespace std;const int MAXM = 2e5 + 5; // 边数上限const int MAXN = 5005; // 点数上限struct Edge { int u, v, w; bool operator> n >> m; // 初始化并查集 for (int i = 1; i > edges.u >> edges.v >> edges.w; } // 按边权排序 sort(edges, edges + m); int selected = 0; // 已选边数 long long total = 0; // 总权值 // 克鲁斯卡尔主过程 for (int i = 0; i < m; i++) { int u = edges.u, v = edges.v; int rootU = find(u), rootV = find(v); if (rootU != rootV) { // 不连通则归并 fa[rootU] = rootV; total += edges.w; selected++; if (selected == n - 1) break; // 已选够n-1条边 } } // 输出结果 if (selected == n - 1) cout