Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector <int> gr[20100];
- bool used[20100];
- int CC[20100], ans;
- void dfs(int v)
- {
- int i, l;
- used[v]=true;
- CC[v]=ans+1;
- l=sz(gr[v]);
- for (i=0; i < l; i++)
- if (!used[gr[v][i]]) dfs(gr[v][i]);
- }
- int main()
- {
- prepare("");
- int n, m, i, u, v;
- cin >> n >> m;
- forn(i, m)
- {
- cin >> u >> v;
- gr[u-1].pb(v-1);
- gr[v-1].pb(u-1);
- }
- for (i=0; i < n; i++)
- {
- if (!used[i])
- {
- dfs(i);
- ans++;
- }
- }
- cout << ans << endl << CC[0];
- for (i = 1; i < n; i++) cout << " " << CC[i];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement