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
#include <cstdio>
#include <vector>

using namespace std;

int main () {
	int k, n1, i, ni, j, p, res, s;
	scanf("%d %d", &k, &n1);
	vector<vector<pair<int, int> > > days;
	days.reserve(k + 8);
	days.push_back(vector<pair<int, int> >(n1, make_pair(0, 0)));
	for (i = 1; i < k; ++i) {
		days.push_back(vector<pair<int, int> >());
		scanf("%d", &ni);
		for (j = 0; j < ni; ++j) {
			scanf("%d", &p);
			days[i].push_back(make_pair(p, 0));
		}
	}
	res = 0;
	for (i = k - 1; i >= 0; --i) {
		s = 0;
		for (j = 0; j < days[i].size(); ++j) {
			if (days[i][j].second == 0) {
				days[i][j].second = 1;
			}
			if (days[i][j].first) {
				days[i - 1][days[i][j].first - 1].second += days[i][j].second;
			}
			s += days[i][j].second;
		}
		if (s > res) {
			res = s;
		}
	}
	printf("%d\n", res);
	return 0;
}