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
#include <bits/stdc++.h>
#define rep(i, a, b) for (int i = a; i <= b; i++)
#define per(i, a, b) for (int i = b; a <= i; i--)
#define cat(x) cerr << #x << " = " << x << '\n';
using ll = long long;
using namespace std;

// SCC + Frodo + LCT => Areny
// but how to solve Frodo?

const int N = 200200;

int n, cnt[N], mx[N];
ll res[N];
vector<int> e[N], r[N];
queue<int> q;

int main() {
	cin.tie(0)->sync_with_stdio(0);

	cin >> n;
	rep(a, 1, n) {
		int m;
		cin >> m;
		while (m--) {
			int b;
			cin >> b;
			e[a].push_back(b);
			r[b].push_back(a);
		}
	}

	rep(b, 1, n) {
		rep(i, 1, n) {
			cnt[i] = int(e[i].size());
			mx[i] = i;
		}

		q.push(b);
		while (!q.empty()) {
			int u = q.front();
			q.pop();
			if (u != b)
				res[mx[u]]++;
			for (auto v : r[u]) {
				mx[v] = max(mx[v], mx[u]);
				if (--cnt[v] == 0) {
					if (v != b) {
						q.push(v);
					}
				}
			}
		}
	}

	rep(i, 1, n) {
		res[i] += res[i - 1];
		cout << res[i] << ' ';
	}

	return 0;
}