Cod sursa(job #408680)

Utilizator lucian_chisLucian Chis lucian_chis Data 3 martie 2010 10:18:43
Problema Arbore partial de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream.h>
#include <fstream.h>
#include <conio.h>

int n,nrm,k=1,mu;
int t[50],h[50],m[3][50];


void citire()
{
	ifstream f("apm.in");
	f>>n>>mu;
	for(int i=1;i<=mu;i++)
		f>>m[0][i]>>m[1][i]>>m[2][i];
	f.close();
}


void sortare()
{
	int aux,ok;
	do
	{
	ok=0;
	for(int i=1;i<mu;i++)
		if(m[2][i]>m[2][i+1])
			{
			aux=m[0][i];
			m[0][i]=m[0][i+1];
			m[0][i+1]=aux;

			aux=m[1][i];
			m[1][i]=m[1][i+1];
			m[1][i+1]=aux;

			aux=m[2][i];
			m[2][i]=m[2][i+1];
			m[2][i+1]=aux;

			ok=1;
			}
	}while(ok);

}


int arb(int nod)
	{
	while(t[nod])
		nod=t[nod];
	return nod;
	}


int main()
{
	ofstream f("apm.out");
	citire();
	
	sortare();

	k=1;
	do
	{
	while(arb(m[0][k])==arb(m[1][k]))
		k++;
	nrm++;
	f<<m[0][k]<<" "<<m[1][k]<<" "<<m[2][k]<<" "<<endl;
	if(h[m[0][k]]==h[m[1][k]])
		{
		t[m[0][k]]=m[1][k];
		h[m[1][k]]++;
		}
	else
		if(h[m[0][k]]<h[m[1][k]])
			t[m[0][k]]=m[1][k];
		else
			t[m[1][k]]=m[0][k];
	k++;
	}while(nrm<n-1);

	return 0;
}