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
48
49
50
#include<bits/stdc++.h>

using namespace std;

int main() {
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(NULL);
	
	int k, n1;
	cin >> k >> n1;
	
	vector<vector<int>> h(k);
	h[0] = vector<int>(n1+1, 0);
	
	vector<vector<int>> a(k);
	
	for (int i = 1; i < k; i++) {
		int n;
		cin >> n;
		a[i] = vector<int>(n+1, 0);
		h[i] = vector<int>(n+1, 0);
		
		for (int j = 1; j <= n; j++) {
			int aij;
			cin >> aij;
			a[i][j] = aij;
		}
	}
	
	
	int max_s = 0;
	for (int i = k - 1; i >= 0; i--) {
		int s = 0;
		for (int j = 1; j < h[i].size(); j++) {
			int deps = max(h[i][j], 1);
			
			if (i != 0 && a[i][j] != 0) {
				int p = a[i][j];
				h[i-1][p] += deps;
			}
			
			s += deps;
		}
		
		max_s = max(max_s, s);
	}
	
	cout << max_s;
	
}