`query`和`qRange`中计算要时刻取模,不然会爆。
by 404Not_Found @ 2022-01-17 11:00:13
```cpp
int query(int rt,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr) {return tree[rt]%mod;}
int res=0,mid=(l+r)>>1;
pushdown(rt,l,r);
if(ql<=mid) res=(res+query(rt<<1,l,mid,ql,qr))%mod;
if(qr>mid) res=(res+query(rt<<1|1,mid+1,r,ql,qr))%mod;
return res;
}
int qRange(int x,int y){
int res=0;
while(top[x]!=top[y]){
if(dep[top[x]]<dep[top[y]]) swap(x,y);
res=(res+query(1,1,n,id[top[x]],id[x]))%mod;
x=fa[top[x]];;
}
if(dep[x]>dep[y]) swap(x,y);
res=(res+query(1,1,n,id[x],id[y]))%mod;
return res%mod;
```
by 404Not_Found @ 2022-01-17 11:00:51
@[404Not_Found](/user/280473) 感谢,已a
by Vidoliga @ 2022-01-17 11:23:22