有一天,你的老板告诉你,他有一堆目前互不连通的计算机网络,他请求你——这位电缆专家的助手——使用新的电缆将这些网络连接起来。现有的网络电缆不能被改动。
他要求你使用的电缆数量尽可能少,但电缆的长度对他来说并不重要,因为电缆是光纤,而连接器才是昂贵的部分。你的老板对电缆的使用非常挑剔,所以你知道现有的网络已经使用了尽可能少的电缆。
凭借你对计算机网络渊博的知识,你当然知道信息包在网络中传输的延迟与数据包所需的跳数(hop)成正比,其中一跳是指经过一根电缆的传输。由于你相信解决老板的问题可能会为你赢得梦寐以求的晋升,你决定最小化任意两个网络节点之间所需的最大跳数。
Wikimedia, cc-by-sa
输入格式
第一行包含两个正整数,计算机的数量 $1 \le c \le 10^5$ 以及现有电缆的数量 $0 \le \ell \le c - 1$。接下来有 $\ell$ 行,每行包含两个整数 $a$ 和 $b$,表示这两台计算机之间有电缆连接。你可以假设每台计算机都有一个 $0$ 到 $n - 1$ 之间的唯一编号。
输出格式
连接后的网络中任意两点间最大跳数的最小值。
样例
样例输入 1
6 4 0 1 0 2 3 4 3 5
样例输出 1
3
样例输入 2
11 9 0 1 0 3 0 4 1 2 5 4 6 4 7 8 7 9 7 10
样例输出 2
4