可能只有我错了。
AC
int find(int x) {
if(f[x].fa==x) return x;
int tmp=find(f[x].fa);
return tmp;
}
int getdis(int x) {
if(f[x].fa==x) return 0;
return f[x].z^getdis(f[x].fa);
}
WA
int find(int x) {
if(f[x].fa==x) return x;
int tmp=find(f[x].fa);
f[x].z^=f[tmp].z;
return tmp;
}