#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#define inf 0x3f3f3f
using namespace std;
char s[2100][10];
int a[2100][2100];
int dis[2100];
int book[2100];
int main()
{
int n;
int i, j, k;
while(~scanf("%d", &n)){
if(n == 0) break;
memset(a,0,sizeof(a));
memset(book,0,sizeof(book));
for(i = 0;i < n;i++){
scanf("%s", s[i]);
}
for(i = 0;i < n;i++){
for(j = i+1;j < n;j++){
for(k = 0;k <7;k++){
if(s[i][k] != s[j][k]){
a[i+1][j+1]++;
a[j+1][i+1]++;
}
}
}
}
for(i = 1;i <= n;i++){
dis[i] = a[1][i];
}
int sum = 0;
int cnt = 1;
int min;
book[1] = 1;
while(cnt < n){
min = inf;
for(i = 1;i <= n;i++){
if(!book[i]&&dis[i] < min){
min = dis[i];
j = i;
}
}
sum += min;
cnt++;
book[j] = 1;
for(k = 1;k <= n;k++){
if(!book[k] &&dis[k] > a[j][k]){
dis[k] = a[j][k];
}
}
}
printf("The highest possible quality is 1/%d.\n", sum);
}
return 0;
}
POJ 1789 Truck History 最小生成树模板题
最新推荐文章于 2023-01-10 18:14:39 发布