#include #include #include using namespace std; int f[20010],r[20010],n; int map[20010]; int xp[20],ans; void init() { for(int i=0;i<=n;i++) { f[i]=i; r[i]=0; } } int find(int x) { if(x==f[x]) return x; int t=find(f[x]); r[x]^=r[f[x]];//规x涓惰圭崇郴姹x涓硅圭崇郴 f[x]=t; return f[x]; } bool Union(int x,int y,int k) { int a=find(x); int b=find(y); if(a==b) { if((r[x]^r[y])==k) return true; return false; } if(a==n) swap(a,b); f[a]=b; r[a]=r[x]^r[y]^k; return true; } bool query(int m) { memset(map,0,sizeof(map)); for(int i=0;i