zoukankan      html  css  js  c++  java
  • 最小生成树

    
    

    输入

    
    
    输入的第一行包含一个正整数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 ",m); 66 return 0; 67 }
  • 相关阅读:
    [Bzoj2243][SDOI2011]染色(线段树&&树剖||LCT)
    [poj3074]Sudoku(舞蹈链)
    [Bzoj1047][HAOI2007]理想的正方形(ST表)
    [Bzoj1030][JSOI2007]文本生成器(AC自动机&dp)
    [Bzoj2431][HAOI2009]逆序对数列(前缀和优化dp)
    [Bzoj1072][SCOI2007]排列perm(状压dp)
    [Bzoj1195][HNOI2006]最短母串(AC自动机)
    Ajax解决IE浏览器兼容问题
    运行eclipse弹出“Failed to load the JNI shared”解决方法
    Java表单类双击提交
  • 原文地址:https://www.cnblogs.com/yfs123456/p/5495988.html
Copyright © 2011-2022 走看看