有没有大佬能告诉我D题哪里错了
写的头昏脑花的,自己写了几个案例都过了,但不知道错哪了,求教。
#include <bits/stdc++.h>
using namespace std;
struct NODE {
int cnt_son;
int son[2005];
int father;
long long int energy;
} parent[200005];
int main() {
int n, sum1 = 0, maxi = 1, f = 0, a, b[100005] = {0};
long long int res=0;
cin >> n;
for (int i = 0; i < n - 1; i++) {
cin >> a;
parent[i + 2].father = a;
parent[a].cnt_son++;
parent[a].son[parent[a].cnt_son] = i + 2;
}
for (int i = 0; i < n; i++) {
cin >> b[i];
sum1 += b[i];
}
sort(b, b + n);
for (int i = 1; i <= n; i++) {
if (parent[maxi].cnt_son < parent[i].cnt_son)
maxi = i;
}
for (int k = parent[maxi].cnt_son; k >= 0 ; k--) {
for (int i = 1; i <= n; i++) {
if (parent[i].cnt_son == k) {
parent[i].energy = b[f];
f++;
}
}
}
for (int k = 0; k <= parent[maxi].cnt_son ; k++) {
for (int i = 1; i <= n; i++) {
if (parent[i].cnt_son == k) {
parent[parent[i].father].energy += parent[i].energy;
}
}
}
for (int i = 1; i <= n; i++) {
res+=parent[i].energy;
}
cout<<res;
}


查看24道真题和解析