• 15.boost最小生成树 prim_minimum_spanning_tree


     1 #include <iostream>
     2 #include <boost/config.hpp>
     3 //图(矩阵实现)
     4 #include <boost/graph/adjacency_matrix.hpp>
     5 #include <boostgraphgraph_utility.hpp>
     6 #include <boost/graph/graph_traits.hpp>
     7 //图(链表实现)
     8 #include <boost/graph/adjacency_list.hpp>
     9 //求最小生成树
    10 #include <boost/graph/kruskal_min_spanning_tree.hpp>
    11 //prim算法求最小生成树
    12 #include <boost/graph/prim_minimum_spanning_tree.hpp>
    13 using namespace std;
    14 using namespace boost;
    15 
    16 //顶点名称
    17 enum { A, B, C, D, E, F };
    18 //顶点个数
    19 #define N 6
    20 const char *name = "ABCDEF";
    21 
    22 //无向图
    23 void main()
    24 {
    25     //图,每个结点是vec来实现,无向图,有边长与权重的属性
    26     adjacency_list<vecS, vecS, undirectedS, no_property, property<edge_weight_t, int>> myg;
    27     add_edge(A, B,13, myg);
    28     add_edge(B, C,23 ,myg);
    29     add_edge(A, C,1, myg);
    30     add_edge(A, D,11, myg);
    31     add_edge(C, D,10, myg);
    32     add_edge(B, D,11, myg);
    33 
    34     //定义图的类型
    35     typedef adjacency_list<vecS, vecS, undirectedS, property<edge_weight_t, int>> mygraph;
    36 
    37     //创建边与权重的映射(weight是函数指针)
    38     auto weight= get(edge_weight,myg);
    39     //property_map<mygraph, edge_weight_t>::type weight = get(edge_weight, myg);
    40 
    41     //vector数组,存放四个顶点
    42     vector<graph_traits<mygraph>::vertex_descriptor> pv(4);
    43 
    44     //将最小生成树的结果插到vector中
    45     prim_minimum_spanning_tree(myg, &pv[0]);
    46 
    47     //输出
    48     for (int i = 0; i < pv.size(); i++)
    49     {
    50         if (pv[i] != i)
    51         {
    52             graph_traits<mygraph>::edge_descriptor ed;
    53             bool isok;
    54             //生成绑定
    55             tie(ed, isok) = edge(i, pv[i], myg);
    56             cout << "tree" << i << "<--->" << pv[i] << "   " << weight[ed] << endl;
    57         }
    58     }
    59     
    60     cin.get();
    61 }
  • 相关阅读:
    PHP的文件下载
    ajax异步请求分页显示
    Linux的启动过程
    搭建nginx反向代理用做内网域名转发
    intellij idea 修改背景保护色&&修改字体&&快捷键大全
    IDEA入门级使用教程-
    http://blog.csdn.net/baidu_31657889/article/details/52315902
    JVM——Java虚拟机架构
    MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题
    windows上 nginx 配置代理服务,配置多域名,以及最简单实现跨域配置
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8667981.html
Copyright © 2020-2023  润新知