#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int k;
cin >> k;
vector<int> n(k);
cin >> n[0];
vector<vector<int>> cnt(k), fa(k);
cnt[0] = vector<int>(n[0]);
for (int i = 1; i < k; ++i) {
cin >> n[i];
fa[i] = vector<int>(n[i]);
cnt[i] = vector<int>(n[i]);
for (int j = 0; j < n[i]; ++j) {
cin >> fa[i][j];
--fa[i][j];
}
}
int ans = 0;
for (int i = k - 1; i >= 0; --i) {
int sum = 0;
for (int j = 0; j < n[i]; ++j) {
cnt[i][j] = max(1, cnt[i][j]);
if (i > 0 && fa[i][j] != -1) {
cnt[i - 1][fa[i][j]] += cnt[i][j];
}
sum += cnt[i][j];
}
ans = max(ans, sum);
}
cout << ans << '\n';
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int k; cin >> k; vector<int> n(k); cin >> n[0]; vector<vector<int>> cnt(k), fa(k); cnt[0] = vector<int>(n[0]); for (int i = 1; i < k; ++i) { cin >> n[i]; fa[i] = vector<int>(n[i]); cnt[i] = vector<int>(n[i]); for (int j = 0; j < n[i]; ++j) { cin >> fa[i][j]; --fa[i][j]; } } int ans = 0; for (int i = k - 1; i >= 0; --i) { int sum = 0; for (int j = 0; j < n[i]; ++j) { cnt[i][j] = max(1, cnt[i][j]); if (i > 0 && fa[i][j] != -1) { cnt[i - 1][fa[i][j]] += cnt[i][j]; } sum += cnt[i][j]; } ans = max(ans, sum); } cout << ans << '\n'; } |
English