Pagini recente » Cod sursa (job #2931809) | Cod sursa (job #2768334) | Cod sursa (job #2296102) | Cod sursa (job #1061928) | Cod sursa (job #2370413)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("apm.in");
ofstream fout ("apm.out");
const int nMax = 200000;
int x[nMax + 5], y[nMax + 5];
pair<int, int> p[nMax + 5];
vector<int> ans;
int r[nMax + 5];
int n, m;
int Radacina(int nod) {
if (r[nod] == 0)
return nod;
r[nod] = Radacina(r[nod]);
return r[nod];
}
void Unire(int a, int b) {
r[a] = b;
}
int main() {
fin >> n >> m;
for (int i = 1; i <= m; i++) {
int z;
fin >> x[i] >> y[i] >> z;
p[i] = {z, i};
}
sort(p + 1, p + 1 + m);
int sol = 0;
for (int i = 1; i <= m; i++){
int rx = Radacina(x[p[i].second]);
int ry = Radacina(y[p[i].second]);
if (rx != ry) {
Unire(rx, ry);
ans.push_back(p[i].second);
sol += p[i].first;
}
}
fout << sol << '\n';
fout << n - 1 << '\n';
for (auto i : ans)
fout << x[i] << " " << y[i] << '\n';
return 0;
}