- void MiniSpanTree_PRIM(MGraph G,VertexType u){
- struct {
- VertexType adjvex;
- VRType lowcost;
- }closedge[MAX_VERTEX_NUM];
- int k=LocateVex(G,u);
- for(int j=0;j<G.vexnum;++j)
- if(j!=k){
- closedge[j].adjvex=u;
- closedge[j].lowcost=G.arcs[k][j].adj;
- }
- closedge[k].lowcost=0;
- printf("Prim 算法输出最小生成树/n");
- for(int i=1;i<G.vexnum;++i){
- int min=INFINITY;
- int k1=0;
- for(int n=0;n<G.vexnum;++n){
- if(closedge[n].lowcost){
- if(closedge[n].lowcost<min){
- min=closedge[n].lowcost;
- k1=n;
- }
- }
- }
- printf("%c-->%c ",closedge[k1].adjvex,G.vexs[k1]);
- closedge[k1].lowcost=0;
- for(int j1=0;j1<G.vexnum;++j1)
- if(G.arcs[k1][j1].adj<closedge[j1].lowcost){
- closedge[j1].lowcost=G.arcs[k1][j1].adj;
- closedge[j1].adjvex=G.vexs[k1];
- }
- }
- printf("/n");
- }
图的最小生成树
最新推荐文章于 2024-07-12 10:45:15 发布