[Lemon-user] Printing Labels in Topological Order

Zeev Sands zeev.sands at gmail.com
Thu Aug 9 16:02:39 CEST 2012


Hello Lemon users,

I'm new to lemon and is figuring out the basics. My question is about 
iterating over a DAG in topological order. Suppose I have a large 
labeled Graph (DAG), a map holding labels and a map holding its 
topological order, as follows:

     // create some graph
     Digraph d;

     // add some nodes
     Digraph::Node n1 = d.addNode();
     ...
     Digraph::Node n234342434 = d.addNode();

     // add some arcs
     d.addArc(n1, nn234342434);

     // Label it
     DiraphGraph::NodeMap<string> lables(g);
     labels[n1] = "foo";
     ...
     labels[n234342434] = "bar";

     // Now sort it
     Digraph::NodeMap<int> order(d);
     topologicalSort(d, order);

How do I now print the labels in the topological order? Something like

     Digraph::Node n = first_in_tipological_order();
     while (  n != order.last_in_topological_order()) {
         std::cout << labels[n] << std::endl;
         n = order.next_in_topological_order();
     }


Thank you very much,
Zeev.





More information about the Lemon-user mailing list