如下树链剖分代码
long long opt2(int x,int y)
{
long long res=0;
printf ("%d %d\n",x,y);
while (top[x] != top[y])
{
printf ("%d %d\n",x,y);
if (dep[x] < dep[y]) swap(x,y);
res += query(1,1,n,idx[top[x]],idx[x]);
res %= mod;
x = fa[top[x]];
}
if (dep[x] > dep[y]) swap(x,y);
res += query(1,1,n,idx[x],idx[y]);
return res%mod;
}
运行的时候内存出错,printf是本人检查时加上的
该函数的调用仅在main函数中
printf ("%lld",opt2(4,8));
结果printf的输出为
4 8
0 4
1 0
?0是从哪冒出来的