#define maxn ???
int father[maxn];
void init()
{
for(int i=1;i<=n;i++)
father[i]=i;
}
int find(int x)
{
return x==father[x]?x:(x=find(father[x]));
}
int kruskal(int n,int m) //n个端点,m条边
{
int ans=0,num_edge=0;
init();
sort(edge,edge+m,cmp) //按边权排序
for(int i=0;i<m;i++)
{
int fu=find(edge[i].u);
int fv=find(edge[i].v);
if(fu!=fv)
{
father[fu]=fv;
ans+=edge[i].val;
num_edge++;
if(num_edge==n-1)
break;
}
}
if(num_edge!=n-1)
return -1;
else
return ans;
}