对 a1 到 an进行差分没问题,但是对 a1 到 an−1 进行差分为什么会出错
dfs_1(1,0);
dfs_2(1,1);
for(int i=1; i<n-1; i++)
{
int lc=lca(a[i],a[i+1]);
s[a[i]]++ , s[a[i+1]]++ , s[lc]-- , s[f[lc]]--;
}
dfs(1,0);
for(int i=2; i<=n-2; i++) s[a[i]]--;
for(int i=1; i<=n; i++) cout << s[i] << '\n' ;