问一下这三种find写法为什么只有第一种是对的
谢谢
int find(int x){
if(fa[x]==x) return x;
int root=find(fa[x]);
d[x]^=d[fa[x]];
return fa[x]=root;
}
int find(int x){
if(fa[x]==x) return x;
fa[x]=find(fa[x]);
d[x]^=d[fa[x]];
return fa[x];
}
int find(int x){
if(fa[x]==x) return x;
d[x]^=d[fa[x]];
fa[x]=find(fa[x]);
return fa[x];
}