# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1176636 | vicvic | Birthday gift (IZhO18_treearray) | C++20 | 436 ms | 78136 KiB |
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
const int NMAX=2e5, LGMAX=18;
int in[NMAX+5], out[NMAX+5], v[NMAX+5], euler[2*NMAX+5], n, m, q, timer, depth[2*NMAX+5], t[NMAX+5], table[NMAX+5][LGMAX+2], l[NMAX+5];
vector <int> vec[NMAX+5];
set <int> poz[NMAX+5];
set <int> lcas[NMAX+5];
void dfs (int nod, int tatal=0, int d=0)
{
t[nod]=tatal;
table[nod][0]=t[nod];
depth[nod]=d;
for (int i=1;i<=LGMAX;i++)
{
table[nod][i]=table[table[nod][i-1]][i-1];
}
for (auto adj : vec[nod])
{
if (adj==tatal)
continue;
dfs (adj, nod, d+1);
}
}
int LCA (int a, int b)
{
if (depth[a]<depth[b])
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |