数据结构---最小生成树

xiaoxiao2021-02-27  134

#define USED 0 #define NOADJ -1 void Prim(MatrixGraph G) {     int i,j,k,min,sum = 0;     int weight[VERTEX_MAX];     char tmpvertex[VERTEX_MAX];     for(i=1;i<G.VertexNum;i++)     {         weight[i] = G.Edges[0][i];         if(weight[i] == MAXVALUE)             tmpvertex[i] = NOADJ;         else             tmpvertex[i] = G.Vertex[0];     }     tmpvertex[0] = USED;     weight[0] = MAXVALUE;     for(i=1;i<G.VertexNum;i++)     {         min = weight[0];         k = i;         for(j=1;j<G.VertexNum;j++)             if(weight[j] < min && tmpvertex[j] != 0)             {                 min = weight[j];                 k = j;             }         sum += min;         printf("(%c,%c),",tmpvertex[k],G.Vertex[k]);         tmpvertex[k] = USED;         weight[k] = MAXVALUE;                  for(j=0;j<G.VertexNum;j++)         if(G.Edges[k][j] < weight[j] && tmpvertex[j] != 0)         {             weight[j] = G.Edges[k][j];             tmpvertex[j] = G.Vertex[k];         }     }     printf("\n min tree %d\n",sum); }
转载请注明原文地址: https://www.6miu.com/read-16988.html

最新回复(0)