#include <bits/stdc++.h>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int k, n;
std::cin >> k >> n;
std::vector<std::vector<int>> tab(k-1);
std::vector<std::vector<int>> cnts(k);
cnts[0] = std::vector<int> (n, 0);
for (int i = 0; i < k - 1; i++) {
int ns;
std::cin >> ns;
cnts[i + 1] = std::vector<int> (ns, 0);
tab[i].resize(ns);
for (int j = 0; j < ns; j++) {
int a;
std::cin >> a;
tab[i][j] = a - 1;
}
}
int answer = 0;
for (int i = k - 1; i >= 0; i--) {
int local_answer = 0;
for (int j = 0; j < (int)cnts[i].size(); j++) {
cnts[i][j] = std::max(cnts[i][j], 1);
local_answer += cnts[i][j];
}
answer = std::max(answer, local_answer);
if (i == 0) {
break;
}
for (int j = 0; j < (int)cnts[i].size(); j++) {
int prev = tab[i - 1][j];
if (prev == -1) {
continue;
}
cnts[i - 1][prev] += cnts[i][j];
}
}
std::cout << answer << "\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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <bits/stdc++.h> int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int k, n; std::cin >> k >> n; std::vector<std::vector<int>> tab(k-1); std::vector<std::vector<int>> cnts(k); cnts[0] = std::vector<int> (n, 0); for (int i = 0; i < k - 1; i++) { int ns; std::cin >> ns; cnts[i + 1] = std::vector<int> (ns, 0); tab[i].resize(ns); for (int j = 0; j < ns; j++) { int a; std::cin >> a; tab[i][j] = a - 1; } } int answer = 0; for (int i = k - 1; i >= 0; i--) { int local_answer = 0; for (int j = 0; j < (int)cnts[i].size(); j++) { cnts[i][j] = std::max(cnts[i][j], 1); local_answer += cnts[i][j]; } answer = std::max(answer, local_answer); if (i == 0) { break; } for (int j = 0; j < (int)cnts[i].size(); j++) { int prev = tab[i - 1][j]; if (prev == -1) { continue; } cnts[i - 1][prev] += cnts[i][j]; } } std::cout << answer << "\n"; } |
English