#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int par[20000]; int siz[20000]; int root(int x) { if (par[x] == x) { return x; } else { return par[x] = root(par[x]); } } int main() { int n, m, a, b; int x, y; cin >> n >> m; for (int i = 1; i <= n; i++) { par[i] = i; siz[i] = 1; } for (int j = 0; j < m; j++) { cin >> a >> b; x = root(a); y = root(b); if (x != y) { if (siz[x] > siz[y]) { par[y] = x; int z = siz[y]; siz[y] += siz[x]; siz[x] += z; } else if (siz[x] < siz[y]) { par[x] = y; int z = siz[y]; siz[y] += siz[x]; siz[x] += z; } else { if (x < y) { par[y] = x; int z = siz[y]; siz[y] += siz[x]; siz[x] += z; } else { par[x] = y; int z = siz[y]; siz[y] += siz[x]; siz[x] += z; } } } } for (int i = 1; i <= n; i++) { cout << root(i) << endl; } return 0; }