#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll k, n, akt, maxi=0, i, j;
cin >> k >> n;
vector < vector <ll> > kon(k);
vector < vector <ll> > lic(k);
kon[0].resize(n+1, 0);
kon[0][0] = n;
lic[0].resize(n+1, 0);
lic[0][0] = n;
for (i=1; i<k; ++i){
cin >> n;
kon[i].resize(n+1);
kon[i][0] = n;
lic[i].resize(n+1, 0);
lic[i][0] = n;
for (j=1; j<n+1; ++j)
cin >> kon[i][j];
}
for (i=k-1; i>=0; --i){
akt = 0;
n = kon[i][0];
for (j=1; j<n+1; ++j){
lic[i][j] = max(lic[i][j], ll(1));
akt += lic[i][j];
if (kon[i][j] > 0)
lic[i-1][ kon[i][j] ] += lic[i][j];
}
maxi = max(maxi, akt);
}
cout << maxi << '\n';
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 | #include<bits/stdc++.h> using namespace std; using ll = long long; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll k, n, akt, maxi=0, i, j; cin >> k >> n; vector < vector <ll> > kon(k); vector < vector <ll> > lic(k); kon[0].resize(n+1, 0); kon[0][0] = n; lic[0].resize(n+1, 0); lic[0][0] = n; for (i=1; i<k; ++i){ cin >> n; kon[i].resize(n+1); kon[i][0] = n; lic[i].resize(n+1, 0); lic[i][0] = n; for (j=1; j<n+1; ++j) cin >> kon[i][j]; } for (i=k-1; i>=0; --i){ akt = 0; n = kon[i][0]; for (j=1; j<n+1; ++j){ lic[i][j] = max(lic[i][j], ll(1)); akt += lic[i][j]; if (kon[i][j] > 0) lic[i-1][ kon[i][j] ] += lic[i][j]; } maxi = max(maxi, akt); } cout << maxi << '\n'; return 0; } |
English