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;
}