定义
int spsum(int x,int y){
int res=0;
while(top[x]!=top[y]){
if(dep[top[x]]>=dep[top[y]]){
res+=check(1,1,n,num[top[x]],num[x]);
x=fa[top[x]];
}
else{
res+=check(1,1,n,num[top[y]],num[y]);
y=fa[top[y]];
}
}
if(dep[x]<dep[y])
res+=check(1,1,n,num[x],num[y]);
else
res+=check(1,1,n,num[y],num[x]);
return res%p;
}
调用
scanf("%lld%lld",&x,&y);
printf("%d\n",spsum);
此代码调试时c++没有报错,输出 4202038