#include<iostream>
#include<cstdio>
#include<vector>
#include<string.h>
#include<functional>
using namespace std;
#define ll long long
const int N=1e3+10;
vector<ll> v[N];
ll fa[N][31],dep[N];
ll n,m,s,a,b;
int main(){
function<void(ll,ll)>dfs=[&](ll root,ll fno)->auto{
fa[root][0]=fno,dep[root]=dep[fa[root][0]]+1;
for(int i=1;i<31;++i)fa[root][i]=fa[fa[root][i-1]][i-1];
for(auto nxt:v[root]){
if(nxt==fno)continue;
dfs(nxt,root);
}
};
auto lca=[&](ll x,ll y){
if(dep[x]>dep[y])swap(x,y);
ll dis=dep[y]-dep[x];
for(int j=0;dis;++j,dis>>=1){
if(dis&1)y=fa[y][j];
}
if(y==x)return y;
for(int j=30;j>=0&&y!=x;--j){
if(fa[x][j]!=fa[y][j]){
x=fa[x][j];
y=fa[y][j];
}
}
return fa[x][0];
};
ll t;
cin>>t;
while(--t){
memset(fa,0,sizeof fa);
memset(dep,0,sizeof dep);
cin>>n>>m>>s;
for(int i=1;i<=n;++i)v[i].clear();
for(int i=1;i<n;++i){
cin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(s,0);
for(int i=0;i<m;++i){
cin>>a>>b;
cout<<lca(a,b)<<'\n';
}
}
return 0;
}
成功有关注。