From e6633ede979374a0761dac25c860bb7b9272e0b7 Mon Sep 17 00:00:00 2001 From: Daneck1988 Date: Tue, 24 Sep 2024 17:49:39 -0300 Subject: [PATCH] Aprendi LCA! --- Problems/SphereOJ/lcasq.cpp | 74 ++++++++++++++++++++++++++++++++++++ Problems/SphereOJ/out | Bin 0 -> 58408 bytes 2 files changed, 74 insertions(+) create mode 100644 Problems/SphereOJ/lcasq.cpp create mode 100755 Problems/SphereOJ/out diff --git a/Problems/SphereOJ/lcasq.cpp b/Problems/SphereOJ/lcasq.cpp new file mode 100644 index 0000000..d1f5df5 --- /dev/null +++ b/Problems/SphereOJ/lcasq.cpp @@ -0,0 +1,74 @@ +#include + +using namespace std; + +vector> bl; +vector> adj; +vector depth; +int bllog2; + +void ddfs(int o){ + for(int nv : adj[o]){ + depth[nv] = depth[o]+1; + ddfs(nv); + } +} + +int lca(int a, int b){ + if(depth[a] < depth[b]) swap(a,b); + + int k = depth[a] - depth[b]; + for(int p = bllog2; p >= 0; p--){ + if(k & (1 << p)){ + a = bl[a][p]; + } + } + + if(a == b) return a; + + for(int p = bllog2; p >= 0; p--){ + if(bl[a][p] != bl[b][p]){ + a = bl[a][p], b = bl[b][p]; + } + } + + return bl[a][0]; +} + +int main(){ + ios::sync_with_stdio(false); + + int n,q, m, x,y; + cin >> n; + + adj.assign(n, vector()); + bllog2 = 32 - __builtin_clz(n); + bl.assign(n, vector(bllog2+1)); + bl[0][0] = 0; + for(int i = 0; i < n; i++){ + cin >> m; + while(m--){ + cin >> x; + bl[x][0] = i; + adj[i].push_back(x); + } + } + + for(int p = 1; p <= bllog2; p++){ + for(int i = 0; i < n; i++){ + x = bl[i][p-1]; + bl[i][p] = bl[x][p-1]; + } + } + depth.resize(n); + depth[0] = 0; + ddfs(0); + + cin >> q; + while(q--){ + cin >> x >> y; + cout << lca(x,y) << '\n'; + } + + return 0; +} \ No newline at end of file diff --git a/Problems/SphereOJ/out b/Problems/SphereOJ/out new file mode 100755 index 0000000000000000000000000000000000000000..5ddd58ec9a875073ac248921acff7aa27fb05331 GIT binary patch literal 58408 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 F{~y9a$uj@| literal 0 HcmV?d00001