HPU 1022 digust——树搜——dfs

该博客介绍了一道关于树形结构的算法题,题目要求求解一棵树中经过两个给定点的最长路径长度。通过两次深度优先搜索(DFS),分别计算起点与终点之间的距离,以及起点和终点各自到子叶节点的最大距离,最后将这三个距离相加得到答案。博客内容包括题目描述、输入输出格式以及解题思路。
摘要由CSDN通过智能技术生成

题目链接——http://net.hpuacm.cf/contests

题意:

这个世界是由无数的透明房间组成,每间屋子都有一个或者若干个门,这些门将这些房间相连,保证任意两个房间只有一条路径可以相互到达(保证这个世界的结构是一个树形结构)。Philo与A分别处于两个透明的房间内。Philo想要远离 A ,现在请你帮助他。

对于每个房间都有一个编号,两个相邻房间距离是1,已知Philo在x房间,A在y房间,Philo每次移动都会远离A,A会同时选择远离Philo,期间他们的距离只会不断增大。他们停止的条件都是到达不能再往前走的房间,即只有一扇门的房间。

题面大家已经看的差不多了,相信也理解了题意: 给一棵树, 求经过x和y两点的树上最长路径的长度。

输入

 

第一行一个整数T,表示测试组数. ( 0< T <= 100) 
接下来的每组数据:
一行三个整数 n,x,y , n 表示这个世界房间的个数, x 和 y 即题意 (x != y ,0< n < 1e5).
接下来的n-1行,每行两个整数 a和 b 表示 a 房间与 b房间 之间可以互相到达( 0 <= a , b < n).

输出

 

每组数据一行,输出一个整数表示最长路径的长度.

HINT : 来自热心学长的提示 :为了降低难度,我们明确告诉大家这这个题的解法很多,不一定要用树形dp

输入样例 1 

1
4 0 1 
0 2
1 2
2 3

输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值