zoukankan      html  css  js  c++  java
  • prime

     1 #include <stdio.h>
     2 #include <string.h>
     3 #define MaxInt 0x3f3f3f3f
     4 #define N 110
     5 //创建map二维数组储存图表,low数组记录每2个点间最小权值,visited数组标记某点是否已访问
     6 int map[N][N],low[N],visited[N];
     7 int n;
     8  
     9 int prim()
    10 {
    11     int i,j,pos,min,result=0;
    12     memset(visited,0,sizeof(visited));
    13 //从某点开始,分别标记和记录该点
    14     visited[1]=1;pos=1;
    15 //第一次给low数组赋值
    16     for(i=1;i<=n;i++)
    17         if(i!=pos) low[i]=map[pos][i];
    18 //再运行n-1次
    19     for(i=1;i<n;i++)
    20     {
    21 //找出最小权值并记录位置
    22      min=MaxInt;
    23      for(j=1;j<=n;j++)
    24          if(visited[j]==0&&min>low[j])
    25          {
    26              min=low[j];pos=j;
    27          }
    28 //最小权值累加
    29     result+=min;
    30 //标记该点
    31     visited[pos]=1;
    32 //更新权值
    33     for(j=1;j<=n;j++)
    34         if(visited[j]==0&&low[j]>map[pos][j])
    35             low[j]=map[pos][j];
    36     }
    37     return result;
    38 }
    39  
    40 int main()
    41 {
    42     int i,v,j,ans;
    43     while(scanf("%d",&n)!=EOF)
    44     {
    45 //所有权值初始化为最大
    46         memset(map,MaxInt,sizeof(map));
    47         for(i=1;i<=n;i++)
    48             for(j=1;j<=n;j++)
    49             {
    50                 scanf("%d",&v);
    51                 map[i][j]=map[i][j]=v;
    52             }
    53             ans=prim();
    54             printf("%d
    ",ans);
    55     }
    56     return 0;
    57 }
    #include <stdio.h>
    #include <string.h>
    #define MaxInt 0x3f3f3f3f
     
  • 相关阅读:
    2021 CCPC 桂林站 补题
    2021 ICPC 上海 流水账
    2021 ICPC 沈阳 补题
    vi中的多行注释和取消注释
    查询列表可筛选可模糊查询的写法
    mybatisplus逻辑删除deleted
    @JsonFormat
    @Component类相互引用的加载顺序
    Chrome浏览器嗅探方法
    DataAdapter.FillSchema 方法
  • 原文地址:https://www.cnblogs.com/hutonm/p/5496239.html
Copyright © 2011-2022 走看看