void dfs(int node, int parent){ preorder[node] = ctr++; ssize[node] = 1; for (int i : adjlist[node]) { if (i == parent) continue; dfs(i, node); } end1[node] = ctr - 1; }