备注 :
一颗树
dfs
倍增预处理 nlogn
lca
求 lca
大约 logn
while
的最坏 O(n) 成链
感觉 80000
的数据应该不会t 吧
if (m==1)//就一条 差不多20把
{
dfs(1,0);
int x=read(),y=read();
int lca=Lca(x,y);
int maxx=0,sum=0;
while (x!=lca)
{
sum+=val[x];
maxx=max(maxx,val[x]);
x=fa[x];
}
while (y!=lca)
{
sum+=val[y];
maxx=max(maxx,val[y]);
y=fa[y];
}
printf("%d",sum-maxx);
}