Pagini recente » Cod sursa (job #3197748) | Cod sursa (job #2731131) | Cod sursa (job #490912) | Cod sursa (job #2443529) | Cod sursa (job #1311664)
#include<cstdio>
#include<algorithm>
using namespace std;
struct muchii{int a,b,c;};
muchii v[400001];
int n,m,arb[200001],cost,much,mini;
bool cmp(const muchii A, const muchii B){
return A.c<B.c;
}
int radacina(int nod){
if(arb[nod]==nod)
return nod;
else{
arb[nod]=radacina(arb[nod]);
return arb[nod];
}
}
int main(){
int i,j,ia,ib;
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",&v[i].a,&v[i].b,&v[i].c);
}
sort(v+1,v+m+1,cmp);
for(i=1;i<=n;i++)
arb[i]=i;
cost=0;
much=0;
for(i=1;i<=m;i++){
if(radacina(v[i].a)!=radacina(v[i].b)){//folosim muchia
cost+=v[i].c;
much++;
arb[radacina(v[i].a)]=radacina(v[i].b);
}
else{
v[i].a=-1;
}
}
printf("%d\n%d\n",cost,much);
for(i=1;i<=m;i++)
if(v[i].a!=-1)
printf("%d %d\n",v[i].a,v[i].b);
return 0;
}