Using this class, you can find an arc in a digraph from a given source to a given target in amortized time O(logd), where d is the outdegree of the source node.
It is possible to find all parallel arcs between two nodes with the operator()
member.
This is a dynamic data structure. Consider to use ArcLookUp or AllArcLookUp if your digraph is not changed so frequently.
This class uses a selfadjusting binary search tree, the Splay tree of Sleator and Tarjan to guarantee the logarithmic amortized time bound for arc lookups. This class also guarantees the optimal time bound in a constant factor for any distribution of queries.
GR  The type of the underlying digraph. 
#include <lemon/core.h>
Inherits ObserverBase< GR, GR::Arc >.
Public Types  
typedef GR  Digraph 
The Digraph type.  
Public Member Functions  
DynArcLookUp (const Digraph &g)  
Constructor.  
Arc  operator() (Node s, Node t, Arc p=INVALID) const 
Find an arc between two nodes.  

inline 
Constructor.
It builds up the search database.

inline 
Find an arc between two nodes.
s  The source node. 
t  The target node. 
p  The previous arc between s and t . It it is INVALID or not given, the operator finds the first appropriate arc. 
s
to t
after p
or INVALID if there is no more.For example, you can count the number of arcs from u
to v
in the following way.
Finding the arcs take at most O(logd) amortized time, specifically, the time complexity of the lookups is equal to the optimal search tree implementation for the current query distribution in a constant factor.