Pagini recente » Cod sursa (job #2835989) | Cod sursa (job #2741826) | Cod sursa (job #742860) | Cod sursa (job #274131) | Cod sursa (job #1704339)
#include<iostream>
#include<fstream>
using namespace std;
int n,nr_muchii,k=1,t[200000],h[50],m[3][400000],v[50],nod,cost,n_m=0;
void citire()
{
ifstream f("apm.in");
f>>n;
while(f>>m[0][k]>>m[1][k]>>m[2][k])
k++;
f.close();
}
void sort()
{
int aux,i,j,ok=0;
int n=k-1;
while(ok==0)
{
ok=1;
for(i=1;i<=n-1;i++)
if(m[2][i]>m[2][i+1])
{
aux=m[2][i];
m[2][i]=m[2][i+1];
m[2][i+1]=aux;
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;
ok=0;
}
}
}
int arb(int nod)
{
while(t[nod])
nod=t[nod];
return nod;
}
int main()
{ ofstream g("apm.out");
citire();
sort();
k=1;
do
{
while(arb(m[0][k])==arb(m[1][k]))
k++;
nr_muchii++;
g<<m[0][k]<<" "<<m[1][k]<<" "<<m[2][k]<<"\n";
n_m++;
cost=cost+m[2][k];
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(nr_muchii<n-1);
g<<"\n"<<cost<<"\n";
g<<n_m<<"\n";
}