zoukankan      html  css  js  c++  java
  • ZOJ

    ZOJ - 1586 QS Network (Prim)

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 const int maxn = 1000+10;
     5 const int MAX = 100000;//无穷远 
     6 int n;
     7 int cost[maxn];
     8 int Edge[maxn][maxn];
     9 int lowcost[maxn];
    10 void Init()
    11 {
    12     cin>>n;
    13     for(int i=0;i<n;i++)
    14     {//读入每个结点的适配器价值 
    15         cin>>cost[i];
    16     }
    17     for(int i=0;i<n;i++)
    18     {//建立邻接矩阵 
    19         for(int j=0;j<n;j++)
    20         {
    21             cin>> Edge[i][j];
    22             if(i == j) Edge[i][j] = MAX; 
    23             else Edge[i][j] += cost[i]+cost[j]; 
    24         }
    25     }
    26     memset(lowcost,0,sizeof(lowcost));
    27 }
    28 
    29 void prim()
    30 {
    31     int sum = 0;
    32     //从源点0开始
    33     lowcost[0] = -1;//-1表示当前结点已经加入
    34     for(int i=1;i<n;i++)
    35         lowcost[i] = Edge[0][i];
    36     for(int i=1;i<n;i++)
    37     {//把其他 n-1 个结点 扩展到生成树中 
    38         int min = MAX,pos;
    39         for(int j=0;j<n;j++)//找到权值最小的边 
    40         {
    41             if(lowcost[j] != -1 && lowcost[j]<min)
    42             {
    43                 min = lowcost[j];pos = j;
    44             }
    45         }
    46         //将新顶点加入
    47         lowcost[pos] = -1;
    48         sum += min;
    49         //更新lowcost数组
    50          for(int k=0;k<n;k++)
    51          {
    52              if(lowcost[k] > Edge[pos][k]) 
    53              lowcost[k] = Edge[pos][k];
    54          }
    55      } 
    56      cout<<sum<<endl; 
    57 }
    58 
    59 int main()
    60 {
    61     int t;
    62     cin>>t;
    63     while(t--)
    64     {
    65         Init();
    66         prim();
    67     }
    68     return 0;
    69 }

  • 相关阅读:
    20170416
    汇总02
    总结
    在编程的世界中,如何高效地学习理论知识,应用理论知识来解决实际生产中的问题
    周末待整理
    web 性能提升
    es6
    http、https、 json、 ajax
    微信小程序 问题收集
    eslint
  • 原文地址:https://www.cnblogs.com/yxh-amysear/p/8590956.html
Copyright © 2011-2022 走看看