兔子

【题目描述】

草原上有N个兔子窝,每个窝里有一只兔子,有M条路径连接着这些窝,并且至多只有一个兔子窝有三条或更多的路径与其相连,其它兔子窝只有一条或两条路径与其相连。

要求把K个兔子窝扩建成避难所,遇到危险时,每只兔子均会同时前往距离它最近的避难所,花费的时间等于其经过的路径条数。

现需要规划一种建造方案,使得最后一只到达避难所的兔子所花费的时间最短。

【输入描述】

第一行输入三个整数N、M、K,分别表示兔子窝的个数、路径数以及计划建造的避难所数;

接下来M行,每行输入两个整数X、Y,表示第X个兔子窝和第Y个兔子窝之间存在一条相连的路径,任意两个兔子窝之间至多只有一条相连的路径。

【输出描述】

输出一个整数,表示最后一只到达避难所的兔子所花费的最短时间。

【输入样例】

5 5 2

1 2

2 3

1 4

1 5

4 5

【输出样例】

1

【数据范围及提示】

样例中,在第2个和第5个兔子窝建造避难所,其它兔子窝的兔子最多只需要经过1条路径就可以到达某个避难所。

对于30%的数据,N ≤ 15,K ≤ 4;

对于60%的数据,N ≤ 100;

对于100%的数据,1 ≤ K ≤ N ≤ 1000,1 ≤ M ≤ 1500。

原文地址:https://www.cnblogs.com/Ackermann/p/6043533.html