2008-08-18 12 views
27

सी ++ बूस्ट अप्रत्यक्ष ग्राफ कैसे बनाएं और गहराई से पहले खोज (डीएफएस) ऑर्डर में इसे कैसे घुमाएं?सी ++ बूस्ट अप्रत्यक्ष ग्राफ कैसे बनाएं और गहराई से पहले खोज (डीएफएस) ऑर्डर में इसे कैसे घुमाएं?

उत्तर

33
// Boost DFS example on an undirected graph. 
// Create a sample graph, traverse its nodes 
// in DFS order and print out their values. 

#include <boost/graph/adjacency_list.hpp> 
#include <boost/graph/depth_first_search.hpp> 
#include <iostream> 
using namespace std; 

typedef boost::adjacency_list<boost::listS, boost::vecS, boost::undirectedS> MyGraph; 
typedef boost::graph_traits<MyGraph>::vertex_descriptor MyVertex; 

class MyVisitor : public boost::default_dfs_visitor 
{ 
public: 
    void discover_vertex(MyVertex v, const MyGraph& g) const 
    { 
    cerr << v << endl; 
    return; 
    } 
}; 

int main() 
{ 
    MyGraph g; 
    boost::add_edge(0, 1, g); 
    boost::add_edge(0, 2, g); 
    boost::add_edge(1, 2, g); 
    boost::add_edge(1, 3, g); 

    MyVisitor vis; 
    boost::depth_first_search(g, boost::visitor(vis)); 

    return 0; 
} 
+2

क्या होगा यदि आप रूट के रूप में vertex 1 का इलाज करना चाहते हैं? – Geoff

+5

बढ़ावा :: deep_first_search (जी, vertex (1, जी), बढ़ावा :: आगंतुक (वी)); –

+0

वाह, क्या यह आसान है? मुझे भी बढ़ावा देना सीखना चाहिए। – nikhil