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 all(a) (a).begin(), (a).end()

typedef long long ll;
typedef vector<int> vi;
typedef vector<long long> vll;
typedef pair<int,int> pii;

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

    int k,n;
    cin>>k>>n;
    vector<vi> depends;
    depends.push_back(vi(n,0));
    
    for (int i=1; i<k; i++) {
        cin>>n;
        depends.push_back(vi(n));
        for (int j=0; j<n; j++) cin>>depends.back()[j];
    }

    vector<vi> reqs;
    for (int i=0; i<depends.size(); i++) reqs.push_back(vi(depends[i].size(),0));
    for (int& v : reqs.back()) v = 1;
    for (int i=depends.size()-1; i>=1; i--) {
       for (int j=0; j<depends[i].size(); j++) if (depends[i][j]) reqs[i-1][depends[i][j]-1] += reqs[i][j];
       for (int j=0; j<reqs[i-1].size(); j++) reqs[i-1][j] = max(1, reqs[i-1][j]);
    }

    int res = 0;
    for (int i=0; i<reqs.size(); i++) {
        int tmp = 0;
        for (int v : reqs[i]) tmp += v;
        res = max(res, tmp);
    }
    cout<<res<<'\n';

    return 0;
}