76 int level(
node v)
const {
return m_n == 1 ? 0 : m_level[m_representative[v]]; }
106 const int&
sparseTable(
int i,
int j)
const {
return m_table[i * m_rangeJ + j - 1]; }
108 int&
sparseTable(
int i,
int j) {
return m_table[i * m_rangeJ + j - 1]; }
116 int rmq(
int u,
int v)
const;
Declaration and implementation of Array class and Array algorithms.
Includes declaration of graph class.
Basic declarations, included by all source files.
The parameterized class Array implements dynamic arrays of type E.
Data type for general directed graphs (adjacency list representation).
Implements the <O(n log n), O(1)>-time "sparse table" algorithm by Bender and Farach-Colton to comput...
int level(node v) const
Returns the level of a node. The level of the root is 0.
int & sparseTable(int i, int j)
LCA(const Graph &G, node root=nullptr)
Builds the LCA data structure for an arborescence.
Array< int > m_level
L[i] is distance of node E[i] from root.
void dfs(const Graph &G, node root)
Performs an Euler tour (actually a DFS with virtual back-edges) through the underlying tree and fills...
int rmq(int u, int v) const
Returns the internal index pointing to the LCA between two nodes u and v.
node call(node u, node v) const
Returns the LCA of two nodes u and v.
Array< node > m_euler
Euler[i] is i-th node visited in Euler Tour.
NodeArray< int > m_representative
Euler[Representative[v]] = v.
const int m_rangeJ
always floor(log(m_len)) (size of a row in the table)
Array< int > m_table
preprocessed M[i,j] array
const int m_n
number of nodes in graph
const int m_len
length of the RMQ array (always 2 m_n - 1)
const int & sparseTable(int i, int j) const
Access the sparse table at [i, j].
const node m_root
the root of the tree
void buildTable()
Fills the O(n log n)-space matrix with auxiliary data the LCA values can be computed from.
Class for the representation of nodes.
RegisteredArray for nodes, edges and adjEntries of a graph.
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
The namespace for all OGDF objects.