CPP/Boost/BGL/PrimMST

From ProgrammingExamples
< CPP
Revision as of 07:45, 10 November 2016 by Daviddoria (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

DijkstraDirected.cpp

#include <iostream>
 
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/prim_minimum_spanning_tree.hpp>
 
typedef boost::property<boost::edge_weight_t, double> EdgeWeightProperty;
 
typedef boost::adjacency_list<boost::setS, // OutEdgeContainer
                              boost::vecS, // VertexContainer
                              boost::undirectedS, boost::no_property, EdgeWeightProperty> Graph;
 
int main(int,char*[])
{
    // Create a graph object
    Graph g(3);
 
    EdgeWeightProperty e1 = 5;
    add_edge(0, 1, e1, g);
 
    EdgeWeightProperty e2 = 3;
    add_edge(1, 2, e2, g);
 
    std::vector < boost::graph_traits < Graph >::vertex_descriptor > parents(num_vertices(g));
 
    // "named parameter" signature
    prim_minimum_spanning_tree(g, &parents[0], boost::root_vertex(1));
 
    for (std::size_t i = 0; i != parents.size(); ++i) {
 
      if (parents[i] != i) {
        std::cout << "parent[" << i << "] = " << parents[i] << std::endl;
      }
      else {
        std::cout << "parent[" << i << "] = no parent" << std::endl;
      }
    }
 
 
    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
 
Project(PrimMST)
 
set(Boost_USE_MULTITHREADED ON)
FIND_PACKAGE(Boost 1.38 COMPONENTS program_options required)
 
INCLUDE_DIRECTORIES(${INCLUDE_DIRECTORIES} ${Boost_INCLUDE_DIRS})
LINK_DIRECTORIES(${LINK_DIRECTORIES} ${Boost_LIBRARY_DIRS})
 
ADD_EXECUTABLE(PrimMST PrimMST.cpp)