由于是一棵树,所以将 (x,y) 这条边删除后,树就被拆分为两棵树。
接着分别以 x 和 y 为根对两棵子树 dfs 求出最大深度即可。
时间复杂度:O(n)
小美的班主任最近组织了一次户外拓展活动,让班里的同学们一起去爬山。在路上,小美看到了一棵漂亮的树,他对这棵树产生了浓厚的兴趣,开始观察并记录这棵树的一些特征。
小美发现这棵树有 n 个节点,其中有一条边被特别标记了出来。他开始思考这条特殊的边在树上起到了什么样的作用,于是他想知道,经过这条选定边的所有树上简单路径中,最长的那条路径有多长,以便更好地理解这棵树的结构。
一条简单的路径的长度指这条简单路径上的边的个数。
第一行一个整数 n ,表示树的节点个数。
第二行 n−1 个整数,第 i 个数 pi 表示节点 i+1 和 pi 之间有一条边相连。
第三行两个整数 x , y ,表示这条选定的边。保证这条边一定是树上的一条边。
对于全部数据, 2≤n≤105 , 1≤pi≤n , 1≤x,y≤n , x=y 。
保证输入数据正确描述一棵树,并且( x,y ) 是树上的条边。
输出一行,一个整数,表示所有经过选定边的树上简单路径中,最长的那条的长度。
输入
7
1 2 3 4 5 3
3 7
输出
4