Pagini recente » Cod sursa (job #659982) | Cod sursa (job #2036755) | Cod sursa (job #3170633) | Cod sursa (job #2687772) | Cod sursa (job #663015)
Cod sursa(job #663015)
#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;
}