zoukankan      html  css  js  c++  java
  • Data Structure Graph: prim

    最小生成树算法。这里的s是可以随意选取的,不影响树的生成,但是不同的s有不同的dis

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <queue>
     5 #include <stack>
     6 #include <string>
     7 #include <fstream>
     8 using namespace std;
     9 
    10 const int MAX = 63535;
    11 
    12 const int N = 5;
    13 int dis[N];
    14 vector<bool> visit(N);
    15 int graph[N][N] = {{0, 2, 0, 6, 0},
    16                    {2, 0, 3, 8, 5},
    17                    {0, 3, 0, 0, 7},
    18                    {6, 8, 0, 0, 9},
    19                    {0, 5, 7, 9, 0}};
    20 
    21 void prim() {
    22     int s = 0;
    23     visit[s] = true;
    24     dis[s] = 0;
    25     for (int i = 1; i < N; i++) {
    26         int min_dis = MAX;
    27         int u;
    28         for (int i = 0; i < N; i++) {
    29             if (!visit[i] && graph[s][i]) dis[i] = min(dis[i], dis[s] + graph[s][i]);
    30             if (!visit[i] && dis[i] < min_dis) {
    31                 u = i;
    32                 min_dis = dis[i];
    33             }
    34         }
    35         s = u;
    36         visit[s] = true;
    37     }
    38 }
    39 
    40 int main() {
    41     memset(dis, MAX, sizeof(dis));
    42     prim();
    43     for (int i = 0; i < N; i++) cout << dis[i] << endl;
    44     return 0;
    45 }
  • 相关阅读:
    Java中的synchronized以及读写锁
    Java中的HashMap低层实现原理
    AOP
    PageRank算法
    Python基础
    RF创建测试库
    RF-RequestsLibrary
    selenium webdriver
    RF开发关键字(四)
    RF关键字(三)
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3674540.html
Copyright © 2011-2022 走看看