#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll K, N, ans, jed=1;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> K >> N;
vector<int> v(K), dst(K), par(N);
v[0] = N;
ll sum = N;
for (int i = 1; i < K; i++) {
cin >> v[i];
dst[i] = sum;
for (int j = 0; j < v[i]; j++) {
ll p;
cin >> p;
par.push_back(p);
}
sum += v[i];
}
vector<ll> od(sum);
for (int i = K - 1; i >= 0; i--) {
ll cur = 0, st = dst[i];
for (int j = 0; j < v[i]; j++) {
ll id = st + j, r = max(od[id], jed);
cur += r;
if (i && par[id]) {
od[dst[i - 1] + par[id] - 1] += r;
}
}
ans = max(ans, cur);
}
cout << 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 | #include <bits/stdc++.h> using namespace std; #define ll long long ll K, N, ans, jed=1; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> K >> N; vector<int> v(K), dst(K), par(N); v[0] = N; ll sum = N; for (int i = 1; i < K; i++) { cin >> v[i]; dst[i] = sum; for (int j = 0; j < v[i]; j++) { ll p; cin >> p; par.push_back(p); } sum += v[i]; } vector<ll> od(sum); for (int i = K - 1; i >= 0; i--) { ll cur = 0, st = dst[i]; for (int j = 0; j < v[i]; j++) { ll id = st + j, r = max(od[id], jed); cur += r; if (i && par[id]) { od[dst[i - 1] + par[id] - 1] += r; } } ans = max(ans, cur); } cout << ans; return 0; } |
English