调了一晚上的代码,头昏脑胀,一早上写了一份编译错误求找
#include <iostream>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
const int MAXX = 2000001;
int cnt, sum, sum_sum, n, m;
int fa[MAXX];
struct edge {
int u, v, w;
} e[MAXX];
int find(int x) {
if (x != fa[x]) return fa[x] = find(fa[x]);
return x;
}
bool cmp(edge a, edge b) {
return a.w < b.w;
}
void tree() {
sort(e + 1, e + 1 + m, cmp);
for (int i = 1; i <= m; i++) {
int u = find(e[i].u);
int v = find(e[i].v);
if (u == v) {
continue;
}
sum += e[i].w;
fa[u] = v;
}
}
int main() {
while (cin >> n >> m) {
if (n == 0 and m == 0) {
break;
}
sum_sum = 0;
sum = 0;
memset(e, 0, sizeof(e));
for (int i = 1; i <= n; i ++) {
fa[i] = i;
}
for (int i = 1; i <= m; i ++) {
cin >> e[i].u >> e[i].v >> e[i].w;
sum_sum += e[i].w;
}
tree();
cout << sum_sum - sum << endl;
}
return 0;
}