#include <lemon/maps.h>
typedef Graph::NodeMap<int> OrderMap; OrderMap order(graph); typedef SettingOrderBoolMap<OrderMap> OrderSetterMap; OrderSetterMap setter(order); Dfs<Graph>::DefProcessedMap<OrderSetterMap>::Create dfs(graph); dfs.processedMap(setter); dfs.init(); for (NodeIt it(graph); it != INVALID; ++it) { if (!dfs.reached(it)) { dfs.addSource(it); dfs.start(); } }
The discovering order can be stored a little harder because the ReachedMap should be readable in the dfs algorithm but the setting order map is not readable. Now we should use the fork map:
typedef Graph::NodeMap<int> OrderMap; OrderMap order(graph); typedef SettingOrderBoolMap<OrderMap> OrderSetterMap; OrderSetterMap setter(order); typedef Graph::NodeMap<bool> StoreMap; StoreMap store(graph); typedef ForkWriteMap<StoreMap, OrderSetterMap> ReachedMap; ReachedMap reached(store, setter); Dfs<Graph>::DefReachedMap<ReachedMap>::Create dfs(graph); dfs.reachedMap(reached); dfs.init(); for (NodeIt it(graph); it != INVALID; ++it) { if (!dfs.reached(it)) { dfs.addSource(it); dfs.start(); } }
Public Member Functions | |
SettingOrderBoolMap (Map &_map) | |
Constructor. | |
int | num () const |
Number of set operations. | |
void | set (const Key &key, Value value) |
Setter function of the map. |