~~是挺丑的。。。~~
by 1saunoya @ 2020-01-24 20:19:00
@[Isaunoya](/user/96580) ~~不说实话会死吗~~
帮忙康康吧dalao
by 蒟蒻365 @ 2020-01-24 20:26:29
@[蒟蒻365](/user/153307) 线段树拍了么,那我就看看树剖不部分了
by KellyFrog @ 2020-01-24 21:47:46
@[longer_name](/user/95103) 谢谢dalao
线段树部分应该没锅
by 蒟蒻365 @ 2020-01-24 21:51:11
@[蒟蒻365](/user/153307) 这两句是smg啊
```cpp
sumans=0;query(1,1,n,in[x],in[fx]); //???????
ans+=sumans;
//还有这个sumans根本没用啊,这样ans会是0
x=f[fx];fx=top[x]; //不应该是先跳重链顶再跳爸爸吗
```
by KellyFrog @ 2020-01-24 21:56:10
我再看看别的
by KellyFrog @ 2020-01-24 21:56:22
```cpp
sumans=0;query(1,1,n,in[x],in[y]); //?????
```
by KellyFrog @ 2020-01-24 21:58:35
@[longer_name](/user/95103) 我线段树写法比较奇怪...query里面是给sumans加了值的
然后我链式前向星是开了2倍空间的吧qaq
by 蒟蒻365 @ 2020-01-24 21:58:47
现在直接改成这样了...
```
inline int line_q(int x,int y){
int ans=0;
while(top[x]!=top[y]){
if(dep[top[x]]<dep[top[y]]) swap(x,y);
sumans=0;query(1,1,n,in[top[x]],in[x]);
ans+=sumans;x=f[top[x]];
}
if(in[x]>in[y]) swap(x,y);
sumans=0;query(1,1,n,in[x],in[y]);
ans=modd(ans+sumans);return ans;
}
by 蒟蒻365 @ 2020-01-24 22:00:34
```cpp
void line_c(int x,int y,int z){
int fx=top[x],fy=top[y];
while(fx!=fy){
if(dep[fx]<dep[fy]) swap(x,y),swap(fx,fy);
change(1,1,n,in[x],in[fx],z); //话说in[x]>in[fx]啊,上边所有线段树操作好像都写烦了,你改一下
x=f[fx],fx=top[x]; //跟上边说的一样
}
if(in[x]>in[y]) swap(x,y);
change(1,1,n,in[x],in[y],z);
}
```
by KellyFrog @ 2020-01-24 22:01:32