#include <cstdio>
#include <vector>
using namespace std;
int main() {
int n, k;
scanf(" %d %d", &k, &n);
vector< vector< vector<int> > > e;
vector< vector<int> > v;
e.resize(k);
v.resize(k);
e[0].resize(n);
v[0].resize(n, 0);
for (int i=1; i<k; ++i) {
scanf(" %d", &n);
e[i].resize(n);
v[i].resize(n);
int a;
for (int j=0; j<n; ++j) {
scanf(" %d", &a);
if (a > 0) e[i-1][a-1].push_back(j);
}
}
for (int i=k-1; i>=0; --i) {
for (int j=0; j<e[i].size(); ++j) {
for (int l: e[i][j]) {
v[i][j] += v[i+1][l];
}
if (v[i][j] == 0) v[i][j] = 1;
}
}
int ans = 0;
for (int i=0; i<k; ++i) {
int curr = 0;
for (int j : v[i]) curr += j;
if (curr > ans) ans = curr;
}
printf("%d\n", ans);
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 40 41 42 43 44 45 46 47 48 | #include <cstdio> #include <vector> using namespace std; int main() { int n, k; scanf(" %d %d", &k, &n); vector< vector< vector<int> > > e; vector< vector<int> > v; e.resize(k); v.resize(k); e[0].resize(n); v[0].resize(n, 0); for (int i=1; i<k; ++i) { scanf(" %d", &n); e[i].resize(n); v[i].resize(n); int a; for (int j=0; j<n; ++j) { scanf(" %d", &a); if (a > 0) e[i-1][a-1].push_back(j); } } for (int i=k-1; i>=0; --i) { for (int j=0; j<e[i].size(); ++j) { for (int l: e[i][j]) { v[i][j] += v[i+1][l]; } if (v[i][j] == 0) v[i][j] = 1; } } int ans = 0; for (int i=0; i<k; ++i) { int curr = 0; for (int j : v[i]) curr += j; if (curr > ans) ans = curr; } printf("%d\n", ans); return 0; } |
English