#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int>> spot[500010];
int main() {
ios_base::sync_with_stdio(0);
int k, n1; cin >> k >> n1;
while(n1--) {
spot[1].push_back({0, 0});
}
for (int i = 2; i <= k; i++) {
int n; cin >> n;
while(n--) {
int p; cin >> p;
spot[i].push_back({p, 0});
}
}
for (int i = k; i >= 1; i--) {
for (auto &s : spot[i]) {
if (s.second == 0)
s.second = 1;
int par = s.first;
int num = s.second;
if (par == 0)
continue;
spot[i-1][par-1].second += num;
}
}
int res = 0;
for (int i = 1; i <= k; i++) {
int res_i = 0;
for (auto &s : spot[i]) {
res_i += s.second;
}
res = max(res, res_i);
}
cout << res << endl;
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 49 50 | #include <bits/stdc++.h> using namespace std; vector<pair<int, int>> spot[500010]; int main() { ios_base::sync_with_stdio(0); int k, n1; cin >> k >> n1; while(n1--) { spot[1].push_back({0, 0}); } for (int i = 2; i <= k; i++) { int n; cin >> n; while(n--) { int p; cin >> p; spot[i].push_back({p, 0}); } } for (int i = k; i >= 1; i--) { for (auto &s : spot[i]) { if (s.second == 0) s.second = 1; int par = s.first; int num = s.second; if (par == 0) continue; spot[i-1][par-1].second += num; } } int res = 0; for (int i = 1; i <= k; i++) { int res_i = 0; for (auto &s : spot[i]) { res_i += s.second; } res = max(res, res_i); } cout << res << endl; return 0; } |
English