| 29 | if (adj[u][i] != parent[u] && adj[u][i] != best) |
| 30 | part(curhead = adj[u][i]); } |
| 31 | void build(int r = 0) { |
| 32 | curloc = 0, csz(curhead = r), part(r); } |
| 33 | int lca(int u, int v) { |
| 34 | vi uat, vat; int res = -1; |
| 35 | while (u != -1) uat.push_back(u), u = parent[head[u]]; |