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
#include <iostream>
#include <vector>
using namespace std;

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int k,n;
    cin >> k >> n;
    vector<long> tab[k]; vector<int> ref[k];
    tab->resize(n);
    ref->resize(n);
    for (int i=1;i<k;++i) {
        cin >> n;
        tab[i].resize(n);
        while (n--)cin>>ref[i].emplace_back();
    }
    long maxsum=0;
    for (int i=k-1;i>=0;--i) {
        long sum=0;
        for (int j=0;j<tab[i].size();++j) {
            sum+=(tab[i][j]=max(1l,tab[i][j]));
            if (ref[i][j]) tab[i-1][ref[i][j]-1]+=tab[i][j];
        }
        if (sum>maxsum) maxsum=sum;
    }
    cout << maxsum;
}