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
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
/*
 * wal.ccp
 *
 *  Created on: Dec 17, 2022
 *      Author: A.Mulawa
 */

#include <iostream>
using namespace std;

int main() {
	int n;
	int t[100];
	int r[100];
	int w[100][100];
	int p[100];

	cin >> n;

	for (int k = 0; k < n; k++) {
		t[k] = 0;
		r[k] = 0;
		p[k] = 0;
		for (int i = 0; i < n; i++) {
			w[k][i] = 0;
		}
	}
	t[0] = 1;

	int rend = 0;
	for (int k = 0; k < n; k++) {
		int z;
		cin >> z;
//		cout << "[" << k + 1 << "] ";
		for (int l = 0; l < z; l++) {
			int li;
			cin >> li;

			if (t[k] > 0) {
				w[k][l] = li;
				t[li - 1]++;
				r[k]++;
				rend++;
			}

//			cout << li << " ";
		}
//		cout << "\n";
	}

//	cout << "after" << "\n";
//	for (int k = 0; k < n; k++) {
//		cout << "[" << k + 1 << "] ";
//		for (int l = 0; l < n; l++) {
//			if (w[k][l])
//				cout << w[k][l] << " ";
//		}
//		cout << "\n";
//	}
//	cout << "\n";
//
//	cout << "rk" << "\n";
//	for (int k = 0; k < n; k++) {
//		cout << r[k] << " ";
//	}
//	cout << "\n";

//	cout << "pk" << "\n";
//	for (int k = 0; k < n; k++) {
//		cout << p[k] << " ";
//	}
//	cout << "rend" << rend << "\n";

	int k = 0;
	long long s = 1;
	while (rend > 0){
		if (p[k] + 1 <= r[k]) {
			int l = p[k];
			p[k]++;
			rend--;
//			cout << w[k][l] << " ";
			k = w[k][l] - 1;
		} else {
			k = 0;
			s++;
//			cout << "\n";
//			for (int k = 0; k < n; k++) {
//				cout << p[k] << " ";
//			}
//			cout << "rend:" << rend << "\n";
		}
		if (p[k] + 1 > r[k]) {
			p[k] = 0;
			rend += r[k];
		}
	};
	cout << s << "\n";

	return 0;
}