Pagini recente » Cod sursa (job #2570675) | Cod sursa (job #2876057) | Cod sursa (job #2493797) | Cod sursa (job #287329) | Cod sursa (job #2039177)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("apm.in");
ofstream fout("apm.out");
#define x first.first
#define y first.second
#define z second
#define pb push_back
#define pii pair<int,int>
const int Mmax = 400000 + 5;
const int Nmax = 200000 + 5;
int n, m, pr[Nmax], cost[Nmax];
pair<pii , int> p[Mmax];
vector<pii> ans;
bool cmp(pair<pii, int>a, pair<pii, int> b)
{
return a.z < b.z;
}
int parinte(int nod)
{
if(pr[nod] == nod)return nod;
return pr[nod] = parinte(pr[nod]);
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; ++i)
pr[i] = i;
for(int i = 1; i <= m; ++i)
fin >> p[i].x >> p[i].y >> p[i].z;
sort(p + 1, p + m + 1, cmp);
for(int i = 1; i <= m; ++i)
{
int a = p[i].x , b = p[i].y, c = p[i].z;
if(parinte(a) == parinte(b))continue;
ans.pb({a,b});
cost[parinte(b)] += cost[parinte(a)] + c;
pr[parinte(a)] = parinte(b);
}
fout << cost[parinte(1)] << '\n';
fout << n - 1 << '\n';
for(int i = 0; i < ans.size(); ++i)
fout << ans[i].first << " " <<ans[i].second << '\n';
return 0;
}