You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
814 B
C++
34 lines
814 B
C++
#define _CRT_SECURE_NO_WARNINGS
|
|
#define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING
|
|
#include <bits/stdc++.h>
|
|
using namespace std;
|
|
const int N = 5e5 + 50;
|
|
int fa[N], sz[N];
|
|
int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); }
|
|
void link(int x, int y)
|
|
{
|
|
int fx = find(x), fy = find(y);
|
|
if (fx != fy)
|
|
{
|
|
fa[fy] = fx;
|
|
sz[fx] += sz[fy];
|
|
}
|
|
}
|
|
int main()
|
|
{
|
|
for (int i = 0; i < N; i++) fa[i] = i, sz[i] = 1;
|
|
int n, m;
|
|
scanf("%d%d", &n, &m);
|
|
for (int i = 0, c, s; i < m; i++)
|
|
{
|
|
scanf("%d", &c);
|
|
if (c == 0) continue;
|
|
scanf("%d", &s);
|
|
for (int i = 1, x; i < c; i++)
|
|
scanf("%d", &x), link(s, x);
|
|
}
|
|
for (int i = 1; i <= n; i++)
|
|
printf("%d ", sz[find(i)]);
|
|
return 0;
|
|
}
|