#include<bits/stdc++.h>
using namespace std;
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int k, n1;
cin >> k >> n1;
vector<vector<int>> h(k);
h[0] = vector<int>(n1+1, 0);
vector<vector<int>> a(k);
for (int i = 1; i < k; i++) {
int n;
cin >> n;
a[i] = vector<int>(n+1, 0);
h[i] = vector<int>(n+1, 0);
for (int j = 1; j <= n; j++) {
int aij;
cin >> aij;
a[i][j] = aij;
}
}
int max_s = 0;
for (int i = k - 1; i >= 0; i--) {
int s = 0;
for (int j = 1; j < h[i].size(); j++) {
int deps = max(h[i][j], 1);
if (i != 0 && a[i][j] != 0) {
int p = a[i][j];
h[i-1][p] += deps;
}
s += deps;
}
max_s = max(max_s, s);
}
cout << max_s;
}
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 | #include<bits/stdc++.h> using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); int k, n1; cin >> k >> n1; vector<vector<int>> h(k); h[0] = vector<int>(n1+1, 0); vector<vector<int>> a(k); for (int i = 1; i < k; i++) { int n; cin >> n; a[i] = vector<int>(n+1, 0); h[i] = vector<int>(n+1, 0); for (int j = 1; j <= n; j++) { int aij; cin >> aij; a[i][j] = aij; } } int max_s = 0; for (int i = k - 1; i >= 0; i--) { int s = 0; for (int j = 1; j < h[i].size(); j++) { int deps = max(h[i][j], 1); if (i != 0 && a[i][j] != 0) { int p = a[i][j]; h[i-1][p] += deps; } s += deps; } max_s = max(max_s, s); } cout << max_s; } |
English