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

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

	int n, today_meetings, free_people = 0, res = 0, i, j;
	cin >> n >> today_meetings;
	vector<vector<int>> meetings(n), needed_people(n);
	meetings[0].resize(today_meetings, 0), needed_people[0].resize(today_meetings, 0);

	for(i = 1; i < n; ++i) {
		cin >> today_meetings;
		meetings[i].resize(today_meetings, 0), needed_people[i].resize(today_meetings, 0);

		for(j = 0; j < today_meetings; ++j)
			cin >> meetings[i][j];
	}
	
    needed_people[n-1].clear();
    needed_people[n-1].resize(today_meetings, 1);
	
	for(i = n - 1; i > 0; --i) {
		for(j = 0; j < meetings[i].size(); ++j) {
			if(meetings[i][j] == 0)
				free_people += needed_people[i][j];
			else
				needed_people[i-1][ meetings[i][j] - 1 ] += needed_people[i][j];
		}

		for(j = 0; j < meetings[i-1].size(); ++j) {
			if(needed_people[i-1][j] == 0) {
				needed_people[i-1][j] = 1;
				free_people = max(free_people - 1, (long long)0);
			}
		}
	}
	
	for(j = 0; j < meetings[0].size(); ++j)
		res += needed_people[0][j];
	res += free_people;

	cout << res << '\n';

	return 0;
}