3 #ifndef HUGO_MA_ORDER_H
4 #define HUGO_MA_ORDER_H
12 template <typename Graph,
13 typename Heap = BinHeap<typename Graph::Node, int,
14 typename Graph::NodeMap<int>,
16 typename OrderVect = std::vector<typename Graph::Node> >
19 typedef typename Graph::Node Node;
20 typedef typename Graph::NodeIt NodeIt;
21 typedef typename Graph::Edge Edge;
22 typedef typename Graph::OutEdgeIt OutEdgeIt;
23 typedef typename Graph::NodeMap<int> NodeMapInt;
32 MAOrder(const Graph& _G, OrderVect& _order) : G(_G), order(_order) {}
43 NodeMapInt heapMap(G, -1);
50 while ( G.valid(n) ) {
52 while(!heap.empty()) {
59 for (;G.valid(e);G.next(e)) {
60 Node v = G.head(e); // hmm
61 if (heap.state(v) == Heap::IN_HEAP ) {
62 heap.decrease(v, heap[v]+1);
64 else if (heap.state(v) == Heap::PRE_HEAP) {
72 if (heap.state(n) == Heap::PRE_HEAP) {
87 #endif // HUGO_MA_ORDER_H