第十三周 项目1最小生成树的普里姆算法

来源:互联网 发布:厦门威尔软件 编辑:程序博客网 时间:2024/05/16 12:48

main.cpp

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /*                   
  2. Copyright (c)2016,烟台大学计算机与控制工程学院                   
  3. All rights reserved.                   
  4. 文件名称:图(2).cpp                   
  5. 作    者:   陈朋             
  6. 完成日期:2016年12月2日                   
  7. 版 本 号:v1.0                      
  8. 问题描述:              
  9. 输入描述:无              
  10. 程序输出:若干                
  11. */      
  12. #include <stdio.h>  
  13. #include <malloc.h>  
  14. #include "graph.h"  
  15.   
  16. void Prim(MGraph g,int v)  
  17. {  
  18.     int lowcost[MAXV];          //顶点i是否在U中  
  19.     int min;  
  20.     int closest[MAXV],i,j,k;  
  21.     for (i=0; i<g.n; i++)           //给lowcost[]和closest[]置初值  
  22.     {  
  23.         lowcost[i]=g.edges[v][i];  
  24.         closest[i]=v;  
  25.     }  
  26.     for (i=1; i<g.n; i++)           //找出n-1个顶点  
  27.     {  
  28.         min=INF;  
  29.         for (j=0; j<g.n; j++)     //在(V-U)中找出离U最近的顶点k  
  30.             if (lowcost[j]!=0 && lowcost[j]<min)  
  31.             {  
  32.                 min=lowcost[j];  
  33.                 k=j;            //k记录最近顶点的编号  
  34.             }  
  35.         printf(" 边(%d,%d)权为:%d\n",closest[k],k,min);  
  36.         lowcost[k]=0;           //标记k已经加入U  
  37.         for (j=0; j<g.n; j++)       //修改数组lowcost和closest  
  38.             if (g.edges[k][j]!=0 && g.edges[k][j]<lowcost[j])  
  39.             {  
  40.                 lowcost[j]=g.edges[k][j];  
  41.                 closest[j]=k;  
  42.             }  
  43.     }  
  44. }  
  45.   
  46. int main()  
  47. {  
  48.     MGraph g;  
  49.     int A[6][6]=  
  50.     {  
  51.         {0,6,1,5,INF,INF},  
  52.         {6,0,5,INF,3,INF},  
  53.         {1,5,0,5,6,4},  
  54.         {5,INF,5,0,INF,2},  
  55.         {INF,3,6,INF,0,6},  
  56.         {INF,INF,4,2,6,0}  
  57.     };  
  58.     ArrayToMat(A[0], 6, g);  
  59.     printf("最小生成树构成:\n");  
  60.     Prim(g,0);  
  61.     return 0;  
  62. }  

0 0
原创粉丝点击