求助,这代码哪错了(最小生成树)
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
typedef struct
{
int Head;
int Tail;
int lowcost;
}data;
data Edge[100];
bool cmp(data x,data y)
{
return x.lowcost<y.lowcost;
}
int find_root(int x,int a[])
{
int x_root=x;
while(a[x_root]!=-1)
{
x_root=a[x_root];
}
return x_root;
}
int UN(int x,int y,int a[])
{
int x_root=find_root(x,a);
int y_root=find_root(y,a);
if(x_root==y_root)
{
return 0;
}
else
{
a[x_root]=y_root;
return 1;
}
}
int main()
{
int n,m,c=0;
scanf("%d%d",&n,&m);
int a[n];
for(int i=0;i<n;i++)
{
a[i]=-1;
}
for(int j=0;j<m;j++)
{
scanf("%d%d%d",&Edge[j].Head,&Edge[j].Tail,&Edge[j].lowcost);
}
stable_sort(Edge,Edge+m,cmp);
for(int l=0;l<m;l++)
{
int x=Edge[l].Head;
int y=Edge[l].Tail;
if(UN(x,y,a))
{
c=c+Edge[l].lowcost;
}
}
printf("%d",c);
return 0;
}