#include #include using namespace std; #define mp make_pair #define REP(A,B) for(int (A)=0;(A)<(B);(A)++) #define lld long double #define ll long long #define pb push_back int n; int S[333333]; vector nxt[333333]; int comp[333333]; int cbit = 0; int csize = 0; void dfs(int u, int color, int par) { //printf("contains %d\n", u); csize++; comp[u] = color; for(int v : nxt[u]) { if(v == par) continue; if((S[u]&S[v])&(1<