WA4的代码(CF上说是溢出了,本机(的坑爹DevC++编译器)跑50000的随机数据没有溢出,UOJ自定义测试没有溢出)
int main(){
ios :: sync_with_stdio(0);
cin >> n;
for(int i=2;i<=n;i++){
cin >> ft[i];
fa[i] = ft[i];
}
for(int i=1;i<=n;i++){
access(i),splay(i);
int x;
cin >> x;
a[i] = x;
sx[i] = 1;
upd(i);
}
AC的代码
void dfs(int u){
sx[u] = 1;
for(int v:G[u]){
dfs(v);
sx[u] += sz[v];
sx2[u] += sqr(sz[v]);
xans[u] += ans[v];
}
upd(u);
}
int main(){
ios :: sync_with_stdio(0);
cin >> n;
for(int i=2;i<=n;i++){
cin >> ft[i];
fa[i] = ft[i];
G[fa[i]].push_back(i);
}
for(int i=1;i<=n;i++) cin>>a[i];
dfs(1);
代码的其余部分可以认为和第一篇题解一样。
表示不知道为什么会WA。
这世界连我初始化的自由都要剥夺吗