我不知道你的op3为什么要写成那样,事实上也是错的
~~然而我并不知道错在哪~~
换了一个正常求lca的能过
```cpp
int op3(int x,int y){
int ans=0;
while(tp[x]!=tp[y]){
if(sgv[tp[x]]<sgv[tp[y]])swap(x,y);
ans+=query(1,sgv[tp[x]],sgv[x]);
x=f[tp[x]];
}
if(sgv[x]<sgv[y])swap(x,y);
ans+=query(1,sgv[y],sgv[x]);
return ans;
}
```
[AC记录](https://www.luogu.com.cn/record/145660369)
by cmach_socket @ 2024-02-01 20:18:19
@[cmach_socket](/user/239458) thx
by Steve_xh @ 2024-02-14 00:07:57