summaryrefslogtreecommitdiff
path: root/graph/LCA_sparse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graph/LCA_sparse.cpp')
-rw-r--r--graph/LCA_sparse.cpp32
1 files changed, 0 insertions, 32 deletions
diff --git a/graph/LCA_sparse.cpp b/graph/LCA_sparse.cpp
deleted file mode 100644
index 3e87cde..0000000
--- a/graph/LCA_sparse.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-struct LCA {
- vector<ll> depth;
- vector<int> visited, first;
- int idx;
- SparseTable st; //sparse table @\sourceref{datastructures/sparseTable.cpp}@
-
- void init(vector<vector<int>>& adj, int root) {
- depth.assign(2 * sz(adj), 0);
- visited.assign(2 * sz(adj), -1);
- first.assign(sz(adj), 2 * sz(adj));
- idx = 0;
- dfs(adj, root);
- st.init(depth);
- }
-
- void dfs(vector<vector<int>>& adj, int v, ll d=0) {
- visited[idx] = v, depth[idx] = d;
- first[v] = min(idx, first[v]), idx++;
-
- for (int u : adj[v]) {
- if (first[u] == 2 * sz(adj)) {
- dfs(adj, u, d + 1);
- visited[idx] = v, depth[idx] = d, idx++;
- }}}
-
- int getLCA(int u, int v) {
- if (first[u] > first[v]) swap(u, v);
- return visited[st.queryIdempotent(first[u], first[v] + 1)];
- }
-
- ll getDepth(int v) {return depth[first[v]];}
-};