#include #include //#include"iphxer_h.h" #include #include #include #include using namespace std; #define maxsize 50100 int rank1[maxsize];//相对于根元素的权值0:同类,1:x吃father[x],2表示被father[x] 吃 int father[maxsize]; void initU(int n){ for(int i=0;in||y>n||(d==2&&x==y)) ++sum; else{ xf=Find(x); yf=Find(y); if(xf==yf){ if((rank1[x]-rank1[y]+3)%3!=d-1) sum++; }else{ Union(x,y,d-1); } } } cout<