#include <iostream>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <cstdio>
#include <algorithm>
#include <map>
#define LL long long using namespace std;
const int N = 5e4; int head[N],tot;
int sum,dir[N],ver[N*],R[N*],first[N],visit[N];
int dp[*N][];
struct nodes
{
int to,next,w;
}Edge[N]; void E_init()
{
tot = ;
memset(head,-,sizeof(head));
} void add(int u,int v,int w)
{
Edge[tot].to = v;
Edge[tot].w = w;
Edge[tot].next = head[u];
head[u] = tot++;
} void dfs(int u,int dep)
{
visit[u] = ;
ver[++sum] = u;
first[u] = sum;
R[sum] = dep;
for(int i = head[u]; i != -; i = Edge[i].next)
{
if(!visit[Edge[i].to])
{
dir[Edge[i].to] = dir[u]+Edge[i].w;
dfs(Edge[i].to,dep+);
ver[++sum] = u;
R[sum] = dep;
}
}
} void ST(int n)
{
for(int i = ; i <= n; i++)
dp[i][] = i;
for(int j = ; (<<j)<=n; j++)
{
for(int i = ;i+(<<j)-<=n; i++)
{
int l,r;
l = dp[i][j-];
r = dp[i+ (<<(j-))][j-];
dp[i][j] = R[l]<R[r]?l:r;
}
}
} int RMQ(int l,int r)
{
//int k = log(r-l+1)/log(2);
int k = ;
while( (<<(k+)) <= r - l + ) k++;
int ll = dp[l][k], rr = dp[r-(<<k)+][k];
return R[ll]<R[rr]?ll:rr;
} int LCA(int u,int v)
{
int x = first[u],y = first[v];
if(x > y) swap(x,y);
return ver[RMQ(x,y)];
} void solve()
{
int n,q;
scanf("%d %d",&n,&q);
E_init();
for(int i = ; i < n-; i++)
{
int u,v,w;
scanf("%d %d %d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
memset(visit,,sizeof(visit));
sum = ;
dir[] = ; dfs(,);
ST(n*-); while(q--)
{
int a,b,c;
scanf("%d %d",&a,&b);
c = LCA(a,b);
printf("%d\n",dir[a]+dir[b]-*dir[c]);
} } int main(void)
{
int t;
scanf("%d",&t);
while(t--)
{
solve();
}
return ;
}

最新文章

  1. Wordpress基础:文章和页面的区别
  2. 将所有程序设置XML集中到一个单独XML配置文件的方法:使用appSettings元素的configSource元素
  3. TreeList的使用
  4. Dede CMS 5.5 升级到 5.7 SP1
  5. Retrofit分析-漂亮的解耦套路
  6. 为 UWP 应用提供的 .NET 网络 API
  7. php截取字符串,无乱码
  8. 【KMP】Cyclic Nacklace
  9. Aidl跨进程通信机制-android学习之旅(87)
  10. PL/SQL 设置
  11. Spring boot 继承 阿里 autoconfig 配置环境参数
  12. [Swift]LeetCode920. 播放列表的数量 | Number of Music Playlists
  13. python日志模块的使用
  14. [转帖]Docker容器CPU、memory资源限制
  15. Django(十)COOKIE和session
  16. Linux下DHCP服务安装配置
  17. MyBatis动态sql之${}和#{}区别
  18. [Linux]Linux下开启snmp支持IPV4和IPV6
  19. src-d engine 强大的git 历史分析工具
  20. hdu1097

热门文章

  1. Python全栈开发:Mysql(二)
  2. React require(“history”).createBrowserHistory` instead of `require(“history/createBrowserHistory”)
  3. linux yum 安装 卸载
  4. 可持久化线段树(主席树)——静态区间第k大
  5. SpringData_03_Specifications动态查询
  6. arguments介绍(二)
  7. ubuntu挂载和挂载NTFS分区命令
  8. TableView之表头、表尾,区头、区尾!
  9. OpenCASCADE 平面与球面求交
  10. js 实现页面局部(或图片)放大功能(vue)