树上替身追赶游戏
题号:NC293617
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

\hspace{15pt}技能机:替身,属性:一般,分类:变化,PP:10(最大16),威力:—,命中:—,技能效果:削减少许自己的HP,制造分身。
\hspace{15pt}本题与《E.图上替身追赶游戏》共享部分题目背景,我们建议您重新阅读题面。

\hspace{15pt}给定一棵由 n 个点和 n-1 条边组成的树,结点编号为 1\sim n。Saki 和 Miku 在树上的点之间移动,模拟追赶游戏,初始时两个人都在节点 k

\hspace{15pt}游戏分若干回合进行,由你扮演 Saki。每回合包含以下步骤:
{\hspace{20pt}}_\texttt{1.}\,Saki 移动:记回合开始时 Saki(你)在节点 a,你必须选择一个与 a 相邻的节点 b 并移动至 b
{\hspace{20pt}}_\texttt{2.}\,Saki 放置替身:Saki(你)不想被 Miku 追上,所以你必须选择一个与节点 b 相邻的节点 c 放置一个替身,该替身仅在本回合内存在;
{\hspace{20pt}}_\texttt{3.}\,Miku 追赶:Miku 将替身视为 Saki 的位置并据此行动:
\hspace{35pt}\circ\,若 Miku 本就位于替身所在的节点 c,她停留不动;
\hspace{35pt}\circ\,否则,Miku 在其当前节点的相邻节点中,选择到节点 c 距离最近的节点 d 并移动到该节点(换句话说,点 d 是 Miku 所在的位置到点 c 的最短路径中的下一个节点)。

\hspace{15pt}游戏在 Saki 首次移动后开始计为第 1 回合。如果在任何时刻 Saki 与 Miku 重合,游戏立即结束。
\hspace{15pt}请计算,如果你采取最优策略,最多能够将游戏进行到第几回合?

输入描述:

\hspace{15pt}第一行输入两个正整数 n,k \left(2\leq n\leq 10^5;\ 1\leq k\leq n\right),表示树的结点数、双方起始位置。
\hspace{15pt}此后 n-1 行,第 i 行输入两个整数 u_i,v_i \left(1\leq u_i,v_i\leq n\right),表示第 i 条树边连接第 u_i 个点和第 v_i 个点。保证给定的边构成一棵树。

输出描述:

\hspace{15pt}输出一个整数,表示 Saki 最多能够坚持到第几回合结束。
示例1

输入

复制
5 1
1 2
1 3
1 4
1 5

输出

复制
2

说明

\hspace{15pt}在这个样例中,其中一种最优策略的移动状况如下:
\hspace{15pt}第一回合:
{\hspace{20pt}}_\texttt{1.}\,Saki 移动到 2 号结点;
{\hspace{20pt}}_\texttt{2.}\,Saki 在 1 号结点放置替身;
{\hspace{20pt}}_\texttt{3.}\,Miku 停留不动。
\hspace{15pt}第二回合:
{\hspace{20pt}}_\texttt{1.}\,Saki 移动到 1 号结点。
\hspace{15pt}此时,她与 Miku 重合,游戏结束。

\hspace{15pt}我们可以证明,不存在比 2 回合坚持更久的策略。