int dvt(int u) {
int now = 1;
for (int v : g[u]) if (v != fa[u]) now += dvt(v);
if (now >= sqrt(n)) key[u] = true, now = 0;
return now;
}
這種樹分塊只能保證一個塊內的高度(最大深度)不超過 \(\sqrt n\),其它什麼也保證不了,但確實是最好寫的。
int dvt(int u) {
int now = 1;
for (int v : g[u]) if (v != fa[u]) now += dvt(v);
if (now >= sqrt(n)) key[u] = true, now = 0;
return now;
}
這種樹分塊只能保證一個塊內的高度(最大深度)不超過 \(\sqrt n\),其它什麼也保證不了,但確實是最好寫的。