Pagini recente » Cod sursa (job #2474969) | Cod sursa (job #753656) | Cod sursa (job #321279) | Cod sursa (job #2188546) | Cod sursa (job #265979)
Cod sursa(job #265979)
#include<cstdio>
#include<algorithm>
using namespace std;
struct muchie{
int x,y,c;
};
muchie v[200001],sol[200001];
int n,m,t[200001];
void read()
{ freopen("apm.in","r",stdin);
int i;
scanf("%d%d",&n,&m);
//fin>>n>>m;
for(i=1;i<=m;i++)
scanf("%d%d%d",&v[i].x,&v[i].y,&v[i].c);
//fin>>v[i].x>>v[i].y>>v[i].c;
}
int cmp(muchie a, muchie b)
{ return a.c<b.c;}
void kruskal()
{ freopen("apm.out","w",stdout);
int i,j,k,l,nr,ct=0,ind=0;
for(i=1;i<=n;i++) t[i]=i;
i=1;
nr=0;
while(nr<n-1)
{ if(t[v[i].x]!=t[v[i].y])
{ nr++;
ct+=v[i].c;
sol[++ind]=v[i];
k=t[v[i].x];
l=t[v[i].y];
for(j=1;j<=n;j++)
if(t[j]==k) t[j]=l;
}
i++;
}
printf("%d %d\n",ct,n-1);
//fout<<ct<<'\n'<<n-1<<'\n';
for(i=1;i<=ind;i++)
printf("%d %d\n", sol[i].x,sol[i].y);
//fout<<sol[i].x<<' '<<sol[i].y<<'\n';
}
int main()
{ read();
sort(v+1,v+1+m,cmp);
kruskal();
return 0;
}