#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int up[maxn][30], depth[maxn], parent[maxn];
int logn, n;
//建立up数组
void build() {
for (int i = 0; i <= logn; ++i) {
for (int k = 1; k <= n; ++k) {
if (i == 0) {
up[k][i] = parent[k];
} else {
up[k][i] = up[up[k][i-1]][i-1];
}
}
}
}
//询问u和v部分
int query(int u, int v) {
if (depth[u] > depth[v]) {
return query(v, u);
}
// depth[u] <= depth[v]
int k = logn;
while (depth[u] != depth[v]) {
if ((depth[v] - depth[u]) >= (1 << k)) {
v = up[v][k];
}
--k;
}
if (u == v) {
return u;
}
for (int i = logn; i >= 0; --i) {
if (up[v][i] != up[u][i]) {
v = up[v][i];
u = up[u][i];
}
}
return up[v][0];
}
int main(){
logn = log2(n);
return 0;
}
能不能帮我打个注释orz