Kruskal算法:
- void Kruskal(Edge E[],int n,int e) {
- int i,j,m1,m2,sn1,sn2,k; int vset[MAXE];
- for (i=0;i<n;i++) vset[i]=i; //初始化辅助数组 k=1; //k表示当前构造最小生成树的第几条边,初值为1
- j=0; //E中边的下标,初值为0 while (k<n) //生成的边数小于n时循环
- { m1=E[j].u;m2=E[j].v; //取一条边的头尾顶点
- sn1=vset[m1];sn2=vset[m2]; //分别得到两个顶点所属的集合编号 if (sn1!=sn2) //两顶点属于不同的集合,该边是最小生成树的一条边
- { printf(" (%d,%d):%d/n",m1,m2,E[j].w);
- k++; //生成边数增1 for (i=0;i<n;i++) //两个集合统一编号










