18namespace spanning_tree {
 
   24  template<
typename TGraph, 
typename TNode>
 
   33  template<
typename TNode, 
typename TWeight>
 
   42  template<
typename TNode, 
typename TWeight>
 
   43  inline static void init(JarnikPrim::Data<TNode, TWeight> &data, 
const TNode &
start);
 
   49template<
typename TGraph, 
typename TNode>
 
   51  using weight_type = 
typename TGraph::edge_type::weight_type;
 
   54  Data<TNode, weight_type> data;
 
   59  while (!data.queue.empty()) {
 
   60    TNode n = data.queue.begin()->second;
 
   61    data.queue.erase(data.queue.begin());
 
   64    auto search = data.p.find(n);
 
   65    if (search != data.p.end()) {
 
   66      res.addEdge(search->second, n, data.g.at(n));
 
   69    for (
const auto &s_edge: 
graph.successorEdges(n)) {
 
   73      weight_type gscore = s_edge.weight();
 
   76      auto search_d = data.g.find(s);
 
   79      if (search_d == data.g.end() || search_d->second > gscore) {
 
   81        auto search_q = data.queue.find(
ext::make_pair(search_d->second, s));
 
   82        if (search_q != data.queue.end()) {
 
   84          data.queue.erase(search_q);
 
   88        data.p.insert_or_assign(s, n);
 
   99template<
typename TNode, 
typename TWeight>
 
  100void JarnikPrim::init(JarnikPrim::Data<TNode, TWeight> &data, 
const TNode &
start) {
 
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
static TNode const & other(const TEdge &e, const TNode &n)
Definition: JarnikPrim.hpp:20
static TGraph findSpanningTree(const TGraph &graph, const TNode &start)
Definition: JarnikPrim.hpp:50
return res
Definition: MinimizeByPartitioning.h:145
constexpr auto make_pair(T1 &&x, T2 &&y)
Definition: pair.hpp:79
Definition: ReconstructPath.hpp:14
void start(measurements::stealth_string name, measurements::Type type)
Definition: measurements.cpp:14