#include using namespace std; typedef long long ll; int e[300], h[300], nex[300]; int idx; int cnt[300], mx_dep; void add(int u, int v) { e[idx] = v, nex[idx] = h[u], h[u] = idx++; } void dfs(int u, int dep) { if (h[u] == -1) //叶子结点 { cnt[dep]++; mx_dep = max(mx_dep, dep); return; } for (int i = h[u]; ~i; i = nex[i]) dfs(e[i], dep + 1); } int main() { int n, m; cin >> n >> m; memset(h, -1, sizeof h); for (int i = 0; i < m; i++) { int id, k; cin >> id >> k; while (k--) { int b; cin >> b; add(id, b); } } dfs(1, 0); cout << cnt[0]; for (int i = 1; i <= mx_dep; i++) cout << ' ' << cnt[i]; return 0; }