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
#include <bits/stdc++.h>
using namespace std;

#define st first
#define nd second

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n, k, x, res = 0, suma = 0;
    cin >> n >> k;
    vector<vector<pair<int, int>>> v(n + 1);

    v[0].push_back({0, 0});
    for(int i = 0; i <= k; i++){
        v[1].push_back({0, 0});
    }
    for(int i = 2; i <= n; i++){
        cin >> k;
        v[i].push_back({0, 0});
        for(int j = 1; j <= k; j++){
            cin >> x;
            v[i].push_back({x, 0});
        }
    }
    for(int i = n; i >= 1; i--){
        for(int j = 1; j < v[i].size(); j++){
            v[i - 1][v[i][j].st].nd += max(1, v[i][j].nd);
            suma += v[i][j].nd;
        }
        res = max(res, suma + v[i][0].nd);
        suma = 0;
    }
    cout << max(res, v[0][0].nd) << '\n';
}
 // for(int i = 0; i <= n; i++){
    //     cout << i << "   ";
    //     for(int j = 0; j < v[i].size(); j++){
    //         cout << v[i][j].st << " " << v[i][j].nd << "    ";
    //     }
    //     cout << '\n';
    // }