[USACO2.4] 牛的旅行 Cow Tours思路
使用 DFS 对连通块染色标记:区分牧场
用 Floyd计算所有点对之间的最短路
计算每个牧场中,每个牧区点到其他点的最短路的最大值
计算每个牧场中,所有最短路的最大值,即每个牧场的直径
对任意两个点,先判断是否同一个牧场。如果不是,考虑加入一条边,变成一个新的牧场。可以直接计算出通过这条边的最短路的最大值。 需要注意的是,通过这条边的最短路的最大值不一定是新牧场的所有最短路的最大值。这里需要比较三个值(牧场 A 的所有最短路的最大值; 牧场 B 的所有最短路的最大值, 加边后通过这条边的最短路的最大值),才能得到正确的新牧场的直径。 遍历所有点对(或者一半), 找出 “新直径” 的最小值