#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
size_t k, n, a, b = 0, c;
cin >> k >> n;
vector< vector< pair< size_t, size_t > > > v(1);
v[0].resize(n);
while (--k && cin >> n) {
v.resize(v.size() + 1);
while (n--) {
cin >> a;
v.back().push_back(make_pair(a, 0));
}
}
k = v.size();
while (k--) {
c = 0;
a = v[k].size();
while (a--) {
v[k][a].second += !v[k][a].second;
c += v[k][a].second;
if (v[k][a].first)
v[k - 1][v[k][a].first - 1].second += v[k][a].second;
}
b = max(b, c);
}
cout << b << '\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 | #include <iostream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); size_t k, n, a, b = 0, c; cin >> k >> n; vector< vector< pair< size_t, size_t > > > v(1); v[0].resize(n); while (--k && cin >> n) { v.resize(v.size() + 1); while (n--) { cin >> a; v.back().push_back(make_pair(a, 0)); } } k = v.size(); while (k--) { c = 0; a = v[k].size(); while (a--) { v[k][a].second += !v[k][a].second; c += v[k][a].second; if (v[k][a].first) v[k - 1][v[k][a].first - 1].second += v[k][a].second; } b = max(b, c); } cout << b << '\n'; } |
English