RT,本人只有判断为非二分图时撤销了并查集,线段树递归结束后没有撤销,hack数据AC
link
inline void pop(const int&Prean){
static int u,v;
while(top!=Prean){
u=stk[top].u;v=stk[top].v;
f[u]=u;siz[v]-=siz[u];--top;
}
}
void Solve(int u,int L=1,int R=k){
int mid=L+R>>1,Prean=top;
for(int&now:t[u]){
int x=e[now].u,y=e[now].v,tx=Find(x),ty=Find(y);
if(tx!=ty)Merge(x,y+n),Merge(x+n,y);
else{
for(register int i=L;i<=R;++i)printf("No\n");
return pop(Prean);
}
}
if(L==R)printf("Yes\n");
else Solve(u<<1,L,mid),Solve(u<<1|1,mid+1,R);
}
希望管理员重造hack数据。