inline bool cut(int x,int y){ makeroot(x); if(findroot(y)!=x||f[y]!=x||c[y][0])return 0; f[y]=c[x][1]=0; pushup(x); return 1; }
我感觉只需要find一次判断就好了啊,既然y的根不是x,那么后面两个判断还有必要吗