Pagini recente » Cod sursa (job #3150308) | Cod sursa (job #995866) | Cod sursa (job #1233725) | Cod sursa (job #3150874) | Cod sursa (job #1325883)
#include<cstdio>
#include<algorithm>
using namespace std;
struct much {int a,b,c;};
much /*op much*/ v[400001];
int rad[200001];
bool sortare( much a, much b)
{return a.c<b.c;
}
int radacina( int nod )
{if(rad[nod]==nod)
return nod;
else
{rad[nod]=radacina(rad[nod]);
return rad[nod];
}
}
int vec[400001];
int main ()
{freopen ("apm.in","r",stdin);
freopen ("apm.out","w",stdout);
int n,m,i,s=0,x=0;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
scanf("%d%d%d",&v[i].a,&v[i].b,&v[i].c);
sort(v+1,v+m+1,sortare);
for(i=1;i<=n;i++)
rad[i]=i;
for(i=1;i<=m;i++)
{
if(radacina(v[i].a)!=radacina(v[i].b))
{s+=v[i].c;
x++;
vec[x]=i;
rad[radacina(v[i].a)]=radacina(v[i].b);
}
}
printf("%d\n%d\n",s,x);
for(i=1;i<=x;i++)
printf("%d %d\n",v[vec[i]].a,v[vec[i]].b);
return 0;
}