好复杂啊,看看下面的
int main() { int n; cin >> n; // 表示前驱的条件 vector<int> con(n); // 表示那两个值的和 vector<int> values(n); for (int i = n - 1; i > 0; ++i) { if (values[i] > 0) values[con[i]] += values[i]; } cout << max(0, values[0]) << endl; return 0; }