zoukankan      html  css  js  c++  java
  • POJ 1258 Agri-Net

    最小生成树prim

    原理:

      任取一点作为起始点,遍历当前点的所有的邻近点,维护更新到达邻近点的最小花费。选择权值最小的点作为下一次的起始点;

      已经遍历过的点不再作为起始点。

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <algorithm>
     5 #include <cmath>
     6 using namespace std;
     7 
     8 const int INF = 99999999 ;
     9 const int maxn = 105 ;
    10 
    11 int map[maxn][maxn];
    12 int visit[maxn];
    13 int low[maxn];
    14 
    15 int main (){
    16     int n;
    17     while (~scanf ("%d",&n)){
    18         for (int i=1;i<=n;i++){
    19             for (int j=1;j<=n;j++){
    20                 scanf ("%d",&map[i][j]);
    21             }
    22             map[i][i]=INF;
    23         }
    24         int ans=0;
    25         memset (visit,0,sizeof visit);
    26         int pos=1;visit[1]=1;
    27         for (int i=1;i<=n;i++)
    28             low[i]=map[pos][i];
    29         int mi=INF;
    30         for (int i=1;i<n;i++){
    31             mi=INF;
    32             for (int j=1;j<=n;j++)
    33                 if (visit[j]==0&&low[j]<mi){
    34                     mi=low[j];pos=j;
    35                 }
    36             ans+=mi;visit[pos]=1;
    37             for (int j=1;j<=n;j++)
    38                 if (!visit[j])
    39                     low[j]=min(low[j],map[pos][j]);
    40         }
    41         printf ("%d
    ",ans);
    42     }
    43     return 0;
    44 }
  • 相关阅读:
    心得
    第七章
    第六章
    第五章
    第四章
    第三章
    第二章
    第一章
    实验2(4)
    实验2(3)
  • 原文地址:https://www.cnblogs.com/gfc-g/p/3949276.html
Copyright © 2011-2022 走看看