Pagini recente » Cod sursa (job #1461452) | Cod sursa (job #409321) | Cod sursa (job #2308491) | Cod sursa (job #2528489) | Cod sursa (job #1629693)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct muchie
{
int c,x,y;
}graf[400005],v[200005];
long n,m,i,sum,q;
int t[200005];
int radacina(int x)
{
if(t[x]==0)
return x;
t[x]=radacina(t[x]);
return t[x];
}
void reuneste(int x,int y)
{
t[radacina(y)]=radacina(x);
}
bool cmp(muchie a , muchie b)
{
return a.c<b.c;
}
int main()
{
FILE *f1,*f2;
f1=fopen("apm.in","r");
f2=fopen("apm.out","w");
fscanf(f1,"%ld%ld",&n,&m);
for(i=0;i<m;i++)
fscanf(f1,"%d%d%d",&graf[i].x,&graf[i].y,&graf[i].c);
sort(graf,graf+m,cmp);
for(i=0,q=0;i<m && q<n-1;i++)
if(radacina(graf[i].x)!=radacina(graf[i].y))
{
sum+=graf[i].c;
reuneste(graf[i].x,graf[i].y);
v[q++]=graf[i];
}
fprintf(f2,"%ld\n%ld\n",sum,n-1);
for(i=0;i<q;i++)
fprintf(f2,"%d %d\n",v[i].x,v[i].y);
return 0;
}