]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
ng_depth: use small_color_map in findLoopReachable
authorJustin Viiret <justin.viiret@intel.com>
Thu, 29 Jun 2017 01:43:45 +0000 (11:43 +1000)
committerMatthew Barr <matthew.barr@intel.com>
Mon, 21 Aug 2017 01:12:26 +0000 (11:12 +1000)
src/nfagraph/ng_depth.cpp

index 67a6b27b4bb32e72a5d05970450787d6875dee80..aaa5166f24f84cdd508762f740cd23ad4289fe3d 100644 (file)
 #include "ng_util.h"
 #include "ue2common.h"
 #include "util/graph_range.h"
+#include "util/graph_small_color_map.h"
 
 #include <deque>
 #include <vector>
 
+#include <boost/graph/breadth_first_search.hpp>
 #include <boost/graph/dag_shortest_paths.hpp>
 #include <boost/graph/depth_first_search.hpp>
-#include <boost/graph/breadth_first_search.hpp>
 #include <boost/graph/filtered_graph.hpp>
+#include <boost/graph/property_maps/constant_property_map.hpp>
 #include <boost/graph/reverse_graph.hpp>
 #include <boost/graph/topological_sort.hpp>
-#include <boost/graph/property_maps/constant_property_map.hpp>
 #include <boost/range/adaptor/reversed.hpp>
 
 using namespace std;
@@ -137,13 +138,15 @@ vector<bool> findLoopReachable(const Graph &g,
     EdgeSet deadEdges;
     BackEdges<EdgeSet> be(deadEdges);
 
-    depth_first_search(g, visitor(be).root_vertex(src));
+    auto colors = make_small_color_map(g);
+
+    depth_first_search(g, be, colors, src);
     auto af = make_bad_edge_filter(&deadEdges);
     auto acyclic_g = make_filtered_graph(g, af);
 
     vector<Vertex> topoOrder; /* actually reverse topological order */
     topoOrder.reserve(deadNodes.size());
-    topological_sort(acyclic_g, back_inserter(topoOrder));
+    topological_sort(acyclic_g, back_inserter(topoOrder), color_map(colors));
 
     for (const auto &e : deadEdges) {
         size_t srcIdx = g[source(e, g)].index;