Pagini recente » Cod sursa (job #1257229) | Cod sursa (job #2954625) | Cod sursa (job #793690) | Cod sursa (job #2766624) | Cod sursa (job #3217499)
#include <iostream>
#include <algorithm>
#include <utility>
using namespace std;
#define NMAX 200000
#define MMAX 400000
int n, m;
pair<int, pair<int, int>> muchii[MMAX + 1];
int r[NMAX + 1];
int t[MMAX + 1];
int sol[MMAX + 1], cost;
void read() {
cin >> n >> m;
for (int i = 0; i < m; i += 1) {
int x, y, c;
cin >> x >> y >> c;
muchii[i] = make_pair(c, make_pair(x, y));
}
}
void init() {
sort(muchii, muchii + m);
for (int i = 1; i <= n; i += 1) {
r[i] = i;
t[i] = 0;
}
}
int rad(int x) {
while (t[x] != 0) {
x = t[x];
}
return x;
}
void solve() {
int s = 0;
for (int i = 0; i < m && s < n - 1; i += 1) {
int c = muchii[i].first;
int x = rad(muchii[i].second.first);
int y = rad(muchii[i].second.second);
if (rad(x) == rad(y)) {
continue;
}
cost += c;
t[y] = x;
sol[s] = i;
s += 1;
}
}
void afis() {
cout << cost << '\n';
cout << n-1 << '\n';
for (int i = 0; i < n-1; i += 1) {
cout << muchii[sol[i]].second.first << ' ' << muchii[sol[i]].second.second << '\n';
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
freopen("apm.in", "r", stdin);
freopen("apm.out", "w", stdout);
read();
init();
solve();
afis();
return 0;
}