Pagini recente » Cod sursa (job #2158459) | Cod sursa (job #1838064) | Cod sursa (job #1261272) | Cod sursa (job #2114128) | Cod sursa (job #2039169)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define NMAX 200005
#define pii pair <int, int>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
struct muchie{
int x, y, c;
};
int n, m, S;
int p[NMAX];
vector <muchie> v;
vector <pii> rsp;
bool cmp(muchie a, muchie b)
{
return a.c < b.c;
}
int parinte(int nod)
{
if (p[nod] == nod)return nod;
return p[nod] = parinte(p[nod]);
}
void unire(int x, int y)
{
p[parinte(x)] = parinte(y);
}
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++)
p[i] = i;
for(int i = 1; i <= m; i++)
{
int x, y, c;
fin >> x >> y >> c;
v.push_back({x, y, c});
}
sort(v.begin(), v.end(), cmp);
for (int i = 0; i < v.size(); i++)
{
int x = v[i].x;
int y = v[i].y;
if (parinte(x) != parinte(y))
{
unire(x, y);
rsp.push_back({x, y});
S += v[i].c;
}
}
fout << S << "\n";
fout << rsp.size() << "\n";
for (int i = 0; i < rsp.size(); i++)
fout << rsp[i].first << " " << rsp[i].second << "\n";
return 0;
}