Cod sursa(job #663015)

Utilizator hunter_ionutzzzFarcas Ionut hunter_ionutzzz Data 17 ianuarie 2012 18:36:56
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
using namespace std;
ifstream fin("krukcal.in");
ofstream fout("krukcal.out");
typedef struct {int x,y,cost;}cel;
int n,m,i,aux1,aux2;
cel v[101],aux21;
inline int cmp(cel a,cel b)
{   if (a.cost > b.cost)
		return 1;
    else
	    return 0;
}
inline int scufund(int k)
{int aux=k;
	if (k*2 >= n && v[k].cost < v[2*k].cost)
		aux = 2*k;
	if (2*k+1 >= n && v[aux].cost < v[2*k+1].cost)
		aux = 2*k+1;
	if (k != aux)
	{   aux21 = v[k];
	    v[k] = v[aux];
		v[aux] = aux21;
		scufund(aux);
	}
}

int main()
{   fin >> n >> m;
    for (i=1;i<=n;++i)
		fin >> v[i].x >> v[i].y >> v[i].cost;
    for (i=n/2;i>=1;--i)
		scufund(i);
	for (i=1;i<=m;++i)
	{   aux1 = v[1].x;
	    aux2 = v[1].y;
		while (aux1 != par[aux1])
			aux1 = par[aux1];
		while (aux2 != par[aux2])
			aux2 = par[aux2];
		if (aux1 != aux2)
		{   par[aux1] = aux2;
		    cost+= v[1].cost;
		}
		scufund(1);
	}
	fout << cost;
	return 0;
}