Pagini recente » Cod sursa (job #2328470) | Cod sursa (job #2886184) | Cod sursa (job #1806829) | Cod sursa (job #1987277) | Cod sursa (job #3327910)
#include <bits/stdc++.h>
#define inf 2000000
using namespace std;
#define cin fin
#define cout fout
ifstream cin("apm.in");
ofstream cout("apm.out");
int tata[200005], n, m, x, y, c, sol;
struct mch
{
int x;
int y;
int cost;
}v[400005];
vector<mch> pp;
bool cmp(mch a, mch b)
{
return (a.cost<b.cost);
}
int parinte(int nod)
{
if(tata[nod]!=-1)
return parinte(tata[nod]);
return nod;
}
int main()
{
cin>>n>>m;
for(int i=1; i<=m; i++)
{
cin>>x>>y>>c;
v[i]={x,y,c};
}
for(int i=1; i<=n; i++)
tata[i]=-1;
sort(v+1,v+m+1,cmp);
for(int i=1; i<=m; i++)
{
int rx=parinte(v[i].x);
int ry=parinte(v[i].y);
if(rx!=ry)
{
tata[rx]=ry;
pp.push_back(v[i]);
sol+=v[i].cost;
}
}
cout<<sol<<'\n'<<pp.size()<<'\n';
for(auto elem : pp)
cout<<elem.x<<' '<<elem.y<<'\n';
}