Cod sursa(job #630300)

Utilizator unsilviuContvechidontdeactivatepls unsilviu Data 5 noiembrie 2011 10:32:55
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <algorithm>
#include <math.h>
using namespace std;
int o[101],x[101][3],cst[101],muc[101],nrmuc,mc,k;
bool srt(int i, int j) {return(cst[i]<cst[j]); }

int main() {
	int n,m,i,j,mn,mx;
	mx=-2000000000;
	mn=2000000000;
	ifstream f("apm.in");
	ofstream g("apm.out");
//	fscanf(f,"%d%d",&n,&m);
	f>>n>>m;
	for (i=1; i<=m; i++) {
		f>>x[i][1]>>x[i][2]>>cst[i];
		o[i]=i;
	}
	sort(o+1,o+m+1,srt);
	mc=0;
	while (nrmuc<n-1) {
		mc++;		
		if  (x[o[mc]][1]!=x[o[mc]][2]) {
			nrmuc++;
			muc[nrmuc]=o[mc];
			mn=x[o[mc]][1]<x[o[mc]][2]?x[o[mc]][1]:x[o[mc]][2];
	/*		mn=min(x[o[mc]][1],x[o[mc]][2]);
			mx=max(x[o[mc]][1],x[o[mc]][2]);*/
			mx= x[o[mc]][1]>x[o[mc]][2]?x[o[mc]][1]:x[o[mc]][2];
			for (i=1; i<=n; i++)
				if (o[i]==mx)
					o[i]=mn;
		}
	}
	for (i=1; i<=nrmuc; i++)
		k+=cst[muc[i]];
	g<<k<<'\n';
	g<<nrmuc;
	f.close();
	g.close();
	return 0;
}