首先题目给出是一棵树 我们可以知道树上两点路径唯一 其次又有一条额外免费的边 所以我们可以这么考虑,x,y之间的路径要么是 在原树上由x到y,要么经过额外免费的边 对于每个询问,取三种情况最小值即可 ll n,m,p; struct node{ int e,next; }edge[maxn]; int head[maxn]; int deep[maxn]; int f[maxn][21]; ll cnt = 0; void addedge(int u,int v){ edge[cnt] = node{v,head[u]}; head[u] = cnt ++; } voi...