#include <iostream>
#include <queue>
using namespace std;
struct tmp {
int x;
int dis;
int to;
friend bool operator<(tmp a, tmp b) { return a.x > b.x; }
};
int n, m, q = 1;
int t[6000];
long long sum;
priority_queue<tmp> x;
int main(int argc, const char** argv) {
cin >> n >> m;
for (size_t i = 0; i < m; i++) {
register tmp z;
cin >> z.dis >> z.to >> z.x;
x.push(z);
}
while (!x.empty()) {
register tmp z = x.top();
x.pop();
if (t[z.dis] == 0 && t[z.to] == 0) {
sum += z.x;
t[z.dis] = q;
t[z.to] = q;
q++;
continue;
}
if (t[z.dis] == 0) {
sum += z.x;
t[z.dis] = t[z.to];
continue;
}
if (t[z.to] == 0) {
sum += z.x;
t[z.to] = t[z.dis];
continue;
}
if (t[z.dis] != t[z.to]) {
sum += z.x;
int pp = min(t[z.dis], t[z.to]);
int qq = max(t[z.dis], t[z.to]);
for (int i = 1; i <= n; i++)
if (t[i] == qq) t[i] = pp;
continue;
}
}
// int p = 1, pp = t[1];
// for (size_t i = 1; i <= n; ++i)
// if (t[i] != pp) p = 0;
// if (p == 1 && pp != 0)
cout << sum;
// else
// cout << "orz";
return 0;
}
#include <algorithm>
#include <iostream>
using namespace std;
struct tmp {
int x;
int dis;
int to;
} z[(int)1e6];
int n, m, q = 1;
int t[6000];
long long sum;
bool cmp1(tmp a, tmp b) { return a.x < b.x; }
int main(int argc, const char** argv) {
cin >> n >> m;
for (size_t i = 0; i < m; i++) {
cin >> z[i].dis >> z[i].to >> z[i].x;
}
sort(z, z + m, cmp1);
int www = 0;
while (www < m) {
if (t[z[www].dis] == 0 && t[z[www].to] == 0) {
sum += z[www].x;
t[z[www].dis] = q;
t[z[www].to] = q;
q++;
continue;
}
if (t[z[www].dis] == 0) {
sum += z[www].x;
t[z[www].dis] = t[z[www].to];
continue;
}
if (t[z[www].to] == 0) {
sum += z[www].x;
t[z[www].to] = t[z[www].dis];
continue;
}
if (t[z[www].dis] != t[z[www].to]) {
sum += z[www].x;
int pp = min(t[z[www].dis], t[z[www].to]);
int qq = max(t[z[www].dis], t[z[www].to]);
for (int i = 1; i <= n; i++)
if (t[i] == qq) t[i] = pp;
continue;
}
www++;
}
// int p = 1, pp = t[1];
// for (size_t i = 1; i <= n; ++i)
// if (t[i] != pp) p = 0;
// if (p == 1 && pp != 0)
cout << sum;
// else
// cout << "orz";
return 0;
}
上面是用的优先队列,以为是优先队列用错了改用下面的sort 都是50分,只对了1,5,7,9,10; 有没有大佬看一下是什么问题? 拜谢