当前位置: 代码迷 >> 综合 >> 最小生成树--Truck History(poj 1789);
  详细解决方案

最小生成树--Truck History(poj 1789);

热度:27   发布时间:2023-12-08 19:14:56.0
卡车历史
时限:2000MS 内存限制:65536K
提交材料共计: 30032 接受: 11735
描述


先进货运有限公司使用不同类型的卡车。有些卡车用于蔬菜运送,其他用于家具或砖。该公司有自己的代码描述每种类型的卡车。该代码只是一个由七个小写字母组成的字符串(每个位置上的每个字母都有一个非常特殊的含义,但对于这个任务并不重要)。在公司发展的初期,只使用了一种卡车类型,后来又衍生出其他类型的卡车,然后从新的类型中衍生出另一种类型,等等。


今天,ACM已经足够富有,足以让历史学家们去研究它的历史了。有一件事是历史学家试图找出的,那就是所谓的派生计划-即如何派生出卡车类型。他们把卡车类型的距离定义为卡车类型代码中不同字母的位置数。他们还认为,每种卡车类型都是从另外一辆卡车中派生出来的(第一种卡车类型除外,它不是从任何其他类型衍生出来的)。然后将派生计划的质量定义为
                               1/Σ(to,td)d(to,td)


其中,求和在派生计划中对所有类型的类型进行处理,使tO是原始类型和td派生自它和d(T0,td)的类型是类型的距离。
因为历史学家失败了,你要写一个计划来帮助他们。给定卡车类型的代码,您的程序应该找到派生计划的最高质量。
输入


输入由几个测试用例组成。每个测试用例以一个包含卡车类型数量的直线开始,n,2<=n<=2 000。下面的每个输入行都包含一个卡车类型代码(一个由七个小写字母组成的字符串)。您可以假设代码唯一地描述了卡车,也就是说,这些N中没有两个是相同的。输入在卡车类型的数目处以零结束。
输出


对于每个测试用例,您的程序应该输出文本“
  相关解决方案