#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ssize(x) int((x).size())
void solve() {
int k, n1; scanf("%d%d", &k, &n1);
vector <vector <int> > g(k + 1), partic(k + 1);
g[1].resize(n1, 0);
partic[1].resize(n1, 0);
for(int i = 2; i <= k; ++i) {
int ni; scanf("%d", &ni);
partic[i].resize(ni, 0);
for(int j = 0; j < ni; ++j) {
int b; scanf("%d", &b);
g[i].pb(b);
}
}
int ans = 0;
for(int i = k; i >= 1; --i) {
int sum = 0;
for(int j = 0; j < ssize(g[i]); ++j) {
int p = partic[i][j];
p = max(p, 1);
sum += p;
if(g[i][j]) partic[i - 1][g[i][j] - 1] += p;
}
ans = max(ans, sum);
}
printf("%d\n", ans);
}
int main() {
solve();
return 0;
}
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 | #include <bits/stdc++.h> using namespace std; #define pb push_back #define ssize(x) int((x).size()) void solve() { int k, n1; scanf("%d%d", &k, &n1); vector <vector <int> > g(k + 1), partic(k + 1); g[1].resize(n1, 0); partic[1].resize(n1, 0); for(int i = 2; i <= k; ++i) { int ni; scanf("%d", &ni); partic[i].resize(ni, 0); for(int j = 0; j < ni; ++j) { int b; scanf("%d", &b); g[i].pb(b); } } int ans = 0; for(int i = k; i >= 1; --i) { int sum = 0; for(int j = 0; j < ssize(g[i]); ++j) { int p = partic[i][j]; p = max(p, 1); sum += p; if(g[i][j]) partic[i - 1][g[i][j] - 1] += p; } ans = max(ans, sum); } printf("%d\n", ans); } int main() { solve(); return 0; } |
English