HDU-2586 How far away ? (离线Tarjan)

本文介绍了一种使用离线Tarjan算法来解决村庄中两点间唯一简单路径距离的问题。对于每组输入,给出了房屋数量、查询次数以及道路信息,任务是回答所有查询的最短路径。通过求解每个点到根节点的距离,结合离线Tarjan算法找到最近公共祖先,可以计算出两点间的最短距离公式:d[u] + d[v] - 2 * d[k],其中k为最近公共祖先。
摘要由CSDN通过智能技术生成

How far away ?

There are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house B"? Usually it hard to answer. But luckily int this village the answer is always unique, since the roads are built in the way that there is a unique simple path("simple" means you can't visit a place twice) between every two houses. Yout task is to answer all these curious people.

Input

First line is a single integer T(T<=10), indicating the number of test cases. 
  For each test case,in the first line there are two numbers n(2<=n<=40000) and m (1<=m<=200),the number of houses and the number of queries. The following n-1 lines each consisting three numbers i,j,k, separated bu a single space, meaning that there is a road connecting hou

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值