У меня есть небольшое сомнение в этой рекурсии, когда will
, вызываемый в main впервые, значение p будет равно -1, скажем, когда будет сделан первый рекурсивный вызов dfs(2,3)
(пусть u = 2, v = 3) тогда 3 автоматически преобразуется в -1?или (2,3)
будет передано как есть, а -1 будет только для первого рекурсивного вызова
void dfs(int v, int p = -1) {
par[v] = p;
for (int u : G[v]) {
if (u == p) continue;
f[u] += f[v];
printf("%d",f[u]);
dfs(u, v);
}
}