(int u, int f)
| 117 | } |
| 118 | |
| 119 | public static void dfs1(int u, int f) { |
| 120 | fa[u] = f; |
| 121 | dep[u] = dep[f] + 1; |
| 122 | siz[u] = 1; |
| 123 | for (int e = head2[u]; e > 0; e = next2[e]) { |
| 124 | int v = to2[e]; |
| 125 | if (v != f) { |
| 126 | dfs1(v, u); |
| 127 | siz[u] += siz[v]; |
| 128 | if (son[u] == 0 || siz[son[u]] < siz[v]) { |
| 129 | son[u] = v; |
| 130 | } |
| 131 | if (u > n) { |
| 132 | addNum(u, arr[v]); |
| 133 | } |
| 134 | } |
| 135 | } |
| 136 | } |
| 137 | |
| 138 | public static void dfs2(int u, int t) { |
| 139 | top[u] = t; |