// Created on 小文的爱拍得. //adjvex[]数组表示 未加入生成树顶点 到生成树最小距离 的顶点 即最短距离 //lowcost[]数组表示 未加入生成树顶点 到生成树的最小距离 #includevoid Prim(MGraph G){ int min,i,j,k; int adjvex[MAXVEX];//保存相关顶点下标 int lowcost[MAXVEX];//保存 未加入生成树的 顶点到生成树 的距离 lowcost[0]=0;//将v0加入生成树 adjvex[0]=0; // 初始化第一个顶点下标为0; for(i=1;i lowcost[i]=G.arc[0][1]; //将v0顶点与之有边的权值存入数组 adjvex[i]=0; //因为当前生成树只有顶点V0 所有说其他点到生成树就相当于到V0 } for(i=1;i min=INFINITY;//初始化最小权值为♾️ 通常设置为65535 j=1;k=0; while(j if(lowcost[j]!=0&&lowcost[j] min=lowcost[j]; k=j;//k 将当前最小值的顶点下标存入k } j++; } printf("%d,%d",adjvex[k],k);//打印选出的路 lowcost[k]=0;//表示k顶点已经加入生成树 for(j=1;j if(lowcost[j]!=0&&G.arc[k][j] lowcost[j]=G.arc[k][j]; adjvex[j]=k; } } } }



