Pagini recente » Cod sursa (job #216500) | Cod sursa (job #496387) | Cod sursa (job #2387562) | Cod sursa (job #2640369) | Cod sursa (job #1077465)
#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 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(arb[v[i].a]!=arb[v[i].b]){//folosim muchia
cost+=v[i].c;
much++;
mini=arb[v[i].a];
if(arb[v[i].b]<mini)
mini=arb[v[i].b];
ia=arb[v[i].a];
ib=arb[v[i].b];
for(j=1;j<=n;j++)
if(arb[j]==ia||arb[j]==ib)
arb[j]=mini;
arb[v[i].a]=mini;
arb[v[i].b]=mini;
}
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;
}