Pagini recente » Cod sursa (job #2490490) | Cod sursa (job #1727999) | Cod sursa (job #123180) | Cod sursa (job #3232472) | Cod sursa (job #2174542)
#include <bits/stdc++.h>
using namespace std;
int nxt,i,nd,n,m,x,y,z,vl,k,fth[200001],j,dad1,dad2,s;
struct muchie
{
int x,y,z;
}mch;
vector <muchie> v,ans;
bool cmp(muchie a, muchie b)
{
return a.z<b.z;
}
int T(int x)
{
if (fth[x]!=x) fth[x]=T(fth[x]);
return fth[x];
}
int main()
{
freopen("apm.in","r",stdin);
freopen("apm.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&mch.x,&mch.y,&mch.z);
v.push_back(mch);
}
sort(v.begin(),v.end(),cmp);
for(i=1;i<=n;i++)
fth[i]=i;
for(i=0;i<v.size();i++)
{
mch=v[i];
dad1=T( mch.x);
dad2=T( mch.y);
if(dad1!=dad2)
{
fth[dad1]=dad2;
s+= mch.z;
ans.push_back( mch);
}
}
printf("%d\n%d\n",s,ans.size());
for(i=0;i<ans.size();i++)
printf("%d %d\n",ans[i].x,ans[i].y);
return 0;
}