#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
const int N=100086;
vector<int> e[N];
int n,m,k,ret,d,dp[N];
void dfs(int ret,int fa,int d)
{
dp[ret]=d;
for(int i=0;i<e[ret].size();i++)
{
if(e[ret][i]==fa)continue;
dfs(e[ret][i],ret,d+1);
}
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>n>>m;
for(int i=0;i<N;i++)e[i].clear();
for(int p1,p2,i=1;i<n;i++)
{
scanf("%d%d",&p1,&p2);
e[p1].push_back(p2);
e[p2].push_back(p1);
}
ret=1;
dfs(ret,0,0);
for(int i=1;i<=n;i++)ret=dp[i]>dp[ret]?i:ret;
dfs(ret,0,0);
for(int i=1;i<=n;i++)ret=dp[i]>dp[ret]?i:ret;
ret = dp[ret];
for(int i=0;i<m;i++)
{
scanf("%d",&k);
if(k<=ret+1)
printf("%d\n",k-1);
else
printf("%d\n",ret+(k-ret-1)*2);
}
}
return 0;
}
hdu4607
最新推荐文章于 2016-08-21 19:30:42 发布