#include<stdio.h>
typedef struct{
int u;
int v;
int w;
}Edge;
void Kruskal(Edge E[],int n,int e){
int i,j,m1,m2,sn1,sn2,k;
int vest[10];
for(i=0;i<n;i++)
vest[i]=i;
k=1;
j=0;
while(k<n){
m1=E[j].u;
m2=E[j].v;
sn1=vest[m1];
sn2=vest[m2];
if(sn1!=sn2){
printf("边(%d,%d)权为%d/n",m1,m2,E[j].w);
k++;
for(i=0;i<n;i++){
if(vest[i]==sn2)
vest[i]=sn1;
}
}
j++;
}
}
void main(){
int n=7,e=10;
Edge E[]={
{3,5,30},{1,4,40},{3,6,42},{2,6,45},
{0,1,50},{3,4,50},{2,3,52},{0,2,60},{1,3,65},
{4,5,70}
};
printf("最小生成树!/n");
Kruskal(E,n,e);
}