Cod sursa(job #649643)

Utilizator CS-meStanca Marian Ciprian CS-me Data 16 decembrie 2011 14:55:27
Problema Arbore partial de cost minim Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *fin=fopen("apm.in","r");
FILE *fout=fopen("apm.out","w");

struct muchie{
	int a, b, cost;
};
muchie v[400010],muchii[400010];

int n,m,i,tati[200005],j,nr,k,t;

long long c;


int cmp(muchie a, muchie b){
	return a.cost < b.cost;
}

int main(){
	
	fscanf(fin,"%d %d",&n,&m);
	
	for(i=1;i<=m;i++){
		fscanf(fin,"%d %d %d",&v[i].a, &v[i].b, &v[i].cost);
	}
	
	sort(v+1,v+m+1,cmp);
	
	
	for(i=1;i<=n;i++){
		tati[i]=i;
	}
	
	for(i=1;i<=m;i++){
		k=tati[v[i].a];
		t=tati[v[i].b];
		if( k != t  )
		{
			for(j=1;j<=n;j++)
			{
				if( tati[ j ] == k  )
				{
					tati[j]=t;
				}
			}
			
			c+=v[i].cost;
			nr++;
			muchii[nr]=v[i];
		}
	}
	
	fprintf(fout,"%lld\n%d",c, nr);
	
	for(i=1;i<=nr;i++){
		fprintf(fout,"\n%d %d",muchii[i].a , muchii[i].b);
	}	
	
	return 0;
}