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

     1 #include <cstdio>
     2 #include <cstring>
     3 using namespace std;
     4 int sum;
     5 int map[101][101];
     6 bool vis[101];
     7 int des[101];
     8 
     9 void prim(int v,int e)
    10 {
    11     int i,j;
    12     memset(vis,0,sizeof(vis));
    13     for(i=1;i<=v;i++)
    14         des[i]=map[1][i];
    15     vis[1]=1;
    16     des[1]=0;
    17     int num=1;
    18     while(num<v)
    19     {
    20         int min=999999,k;
    21         for(i=2;i<=v;i++)
    22         {
    23             if(des[i]<min&&vis[i]==0)
    24             {
    25                 min=des[i]; k=i;
    26             }
    27         }
    28         sum+=min;
    29         vis[k]=1;
    30         num++;
    31         for(i=2;i<=v;i++)
    32             if(map[k][i]<des[i]&&vis[i]==0)
    33             des[i]=map[k][i];
    34     }
    35 }
    36         
    37 
    38 int main()
    39 {
    40     int n;
    41     scanf("%d",&n);
    42     for(int i=1;i<=n;i++)
    43         for(int j=1;j<=n;j++)
    44     {
    45         scanf("%d",map[i]+j);
    46     }
    47     int e=0;
    48     for(int  i=1;i<=n;i++)
    49         for(int j=1;j<=j;j++)
    50         if(map[i][j])
    51             e++;
    52     sum=0;
    53     prim(n,e);
    54     printf("%d
    ",sum);
    55     return 0;
    56 }
    57     
  • 相关阅读:
    读书笔记
    JavaScript
    Vue
    读书笔记
    Python
    Python
    概率论07 联合分布
    概率论06 连续分布
    概率论05 离散分布
    概率论04 随机变量
  • 原文地址:https://www.cnblogs.com/WDKER/p/5481960.html
Copyright © 2011-2022 走看看