码迷,mamicode.com
首页 > 其他好文 > 详细

最小生成树

时间:2016-05-15 21:31:47      阅读:706      评论:0      收藏:0      [点我收藏+]

标签:


输入


输入的第一行包含一个正整数n,表示图中共有n个顶点。其中n不超过50。
以后的n行中每行有n个用空格隔开的整数,对于第i行的第j个整数,如果不为0,则表示第i个顶点和第j个顶点有直接连接且代价为相应的值,0表示没有直接连接。当i和j相等的时候,保证对应的整数为0。
输入保证邻接矩阵为对称矩阵,即输入的图一定是无向图,且保证图中只有一个连通分量。

输出


只有一个整数,即最小生成树的总代价。请注意行尾输出换行。

样例输入


4 0 2 4 0 2 0 3 5 4 3 0 1 0 5 1 0

样例输出


6

1
#include <stdio.h> 2 #define N 55 3 #define INF 600000 4 #define INF2 600001 5 typedef struct g{ 6 int arc[N][N]; 7 int arcNum,verNum; 8 int maxWeight; 9 }Graph; 10 typedef struct { 11 int adjvex; 12 int lowcost; 13 }Closedge; 14 void Create(Graph *G,int n){ 15 int i,j; 16 G->verNum = G->arcNum = n; 17 G->maxWeight = 0; 18 for(i = 0; i < G->arcNum; i++) 19 for(j = 0; j < G->arcNum; j++){ 20 scanf("%d",&G->arc[i][j]); 21 if(G->maxWeight < G->arc[i][j]) 22 G->maxWeight = G->arc[i][j]; 23 } 24 } 25 void Prim(Graph *G,int &spent){ 26 Closedge closedge[N]; 27 int i,j,k,min,minVer; 28 //初始化数组closedge 29 for(i = 0; i < G->verNum; i++){ 30 closedge[i].adjvex = 0;//从结点 0 开始 31 if(G->arc[0][i]) 32 closedge[i].lowcost = G->arc[0][i]; 33 else 34 closedge[i].lowcost = INF; 35 } 36 37 closedge[0].lowcost = INF2; 38 39 for(j = 0; j < G->verNum - 1; j++){ 40 min = G->maxWeight; 41 //选择最小的边 42 for(k = 0; k < G->verNum; k++) 43 if(closedge[k].lowcost && min > closedge[k].lowcost){ 44 min = closedge[k].lowcost; 45 minVer = k;//closedge[k].adjvex 46 } 47 spent += min; 48 closedge[minVer].lowcost = INF2;//加入入选集合 49 //查找顶点minVer到没入选顶点的“花费” minVer = 1; 50 for(k = 0; k < G->verNum; k++){ 51 if(closedge[k].lowcost != INF2 && G->arc[minVer][k] < closedge[k].lowcost && G->arc[minVer][k]){ 52 closedge[k].adjvex = k; 53 closedge[k].lowcost = G->arc[minVer][k]; 54 } 55 } 56 } 57 } 58 int main(){ 59 int n; 60 Graph G; 61 scanf("%d",&n); 62 Create(&G,n); 63 int m = 0; 64 Prim(&G,m); 65 printf("%d\n",m); 66 return 0; 67 }

 

最小生成树

标签:

原文地址:http://www.cnblogs.com/yfs123456/p/5495988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!