#include <bits/stdc++.h>
using namespace std;
void solve() {
int k, n1;
cin >> k >> n1;
vector<vector<int>>parent(k);
vector<vector<int>>dp(k);
parent[0].resize(n1);
dp[0].resize(n1);
for (int i = 1; i < k; ++i) {
int ni;
cin >> ni;
parent[i].resize(ni);
dp[i].resize(ni);
for (int &x : parent[i]) {
cin >> x;
}
}
int answer = 0;
for (int i = k - 1; i >= 0; --i) {
int at_this_level = 0;
for (int j = 0; j < (int)dp[i].size(); ++j) {
dp[i][j] = max(dp[i][j], 1);
at_this_level += dp[i][j];
if (i > 0 && parent[i][j] > 0) {
dp[i - 1][parent[i][j] - 1] += dp[i][j];
}
}
answer = max(answer, at_this_level);
}
cout << answer;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
solve();
}
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 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include <bits/stdc++.h> using namespace std; void solve() { int k, n1; cin >> k >> n1; vector<vector<int>>parent(k); vector<vector<int>>dp(k); parent[0].resize(n1); dp[0].resize(n1); for (int i = 1; i < k; ++i) { int ni; cin >> ni; parent[i].resize(ni); dp[i].resize(ni); for (int &x : parent[i]) { cin >> x; } } int answer = 0; for (int i = k - 1; i >= 0; --i) { int at_this_level = 0; for (int j = 0; j < (int)dp[i].size(); ++j) { dp[i][j] = max(dp[i][j], 1); at_this_level += dp[i][j]; if (i > 0 && parent[i][j] > 0) { dp[i - 1][parent[i][j] - 1] += dp[i][j]; } } answer = max(answer, at_this_level); } cout << answer; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); } |
English