D - S老师的虚树
值得一提的是如何求这个
a
i
a_i
ai,可以考虑按dfs序考虑同一种边,运用树状数组即可统计(注意不要加重了,不需要打区间覆盖,这样可以不用打线段树)
F(i, 1, n) {
ll sz = d[i].size() - 1;
if (sz < 0) continue;
total ++;
F(j, 0, sz) {
ll k = d[i][j], sz = sum(DFN[k]) - sum(dfn[k] - 1);
a[sz] ++;
add(dfn[k], - sz), g.pb({dfn[k], sz});
}
a[sum(n)] ++;
sz = g.size() - 1;
F(j, 0, sz) add(g[j].x, g[j].y);
g.clear();
}