Cod sursa(job #1405359)

Utilizator LycrsTrifan Tamara Lycrs Data 29 martie 2015 07:37:05
Problema Arbore partial de cost minim Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
#include<algorithm>

using namespace std;
ifstream cin("apm.in");
ofstream cout("apm.out");
 
 struct Lat{ 
 	int x, y, cost;
 }A[400005];
 
 struct Arb{
 	int x, y;
 }T[400005];
 
int u[200005], i, j, k, n, m, a, b, S;

bool cmp(const Lat &x,const Lat &y){
	return x.cost<y.cost;
}


int SK(int x){
	if (x==u[x]) return x;
	else {
		u[x]=SK(u[x]); 
		return u[x];
	}
}

int main()
{
 	
 	cin>>n>>m;
 	for (i=1; i<=n; ++i) u[i]=i;
 	
 	for(i=1; i<=m; ++i) cin>>A[i].x>>A[i].y>>A[i].cost;
 	
 	sort(A+1, A+m+1, cmp);
 	for(i=1; i<=m; ++i){ 		
 		a=SK(A[i].x);
 		b=SK(A[i].y);
 		if (a!=b){
 			S+=A[i].cost;
 			u[b]=a;
 			T[++k].x=A[i].x;
 			T[k].y=A[i].y;
		 }
		 
	 }
 		
 	cout<<S<<'\n';
 	cout<<k<<'\n';
 	for(i=1; i<=k; ++i) cout<<T[i].x<<' '<<T[i].y<<'\n';
 	
 
 return 0; 
}