代码照着题解写的。
AC 代码是这样的:
void insert(int x){
if(top == 1){
st[++top] = x;
return;
}
int z = lca(x, st[top]);
if(z == st[top]){
return;
}
while(top > 1 && id[st[top - 1]] >= id[z]) add(st[top - 1], st[top]), top--;
if(st[top] != z){
add(z, st[top]);
st[top] = z;
}
st[++top] = x;
}
把
if(z == st[top]){
return;
}
改成
if(z == st[top]){
st[++top] = x;
return;
}
为啥就 T 了,按道理应该没问题的吧?