Pagini recente » Cod sursa (job #1848688) | Cod sursa (job #2402152) | Cod sursa (job #1013982) | Cod sursa (job #2735523) | Cod sursa (job #2544912)
#include <iostream>
#include <fstream>
#define NMAX 101
#define MMAX 1001
#include <algorithm>
using namespace std;
ifstream f("f.in");
struct muchie{int v1,v2,c;};
int t[NMAX],h[NMAX],n,m;
muchie a[MMAX],apm[NMAX];
void citire()
{
f>>n>>m;
for(int i=1;i<=m;i++)
f>>a[i].v1>>a[i].v2>>a[i].c;
}
bool compare(muchie a,muchie b)
{
if(a.c<b.c)
return 1;
else
return 0;
}
int radacina(int x)
{
if(t[x]==0)
return x;
else
return radacina(t[x]);
}
void Kruskhal()
{
int j=1,x,y,r1,r2;
for(int i=1;i<=m;i++)
{
x=a[i].v1;
y=a[i].v2;
r1=radacina(x);
r2=radacina(y);
if(r1!=r2)
{
apm[j]=a[i];
j++;
if(h[r1]>h[r2])
t[r2]=r1;
else
if(h[r1]<h[r2])
t[r1]=r2;
else
{
t[r1]=r2;
h[r2]++;
}
if(j==n)
break;
}
}
}
int main()
{
citire();
sort(a+1,a+m+1,compare);
Kruskhal();
int s=0;
for(int i=1;i<n;i++)
{
s+=apm[i].c;
}
cout<<s;
return 0;
}