标签:
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 19510 | Accepted: 7525 |
Description
Input
Output
Sample Input
4 aaaaaaa baaaaaa abaaaaa aabaaaa 0
Sample Output
The highest possible quality is 1/3.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define INF 0x7fffffff
int n,a[2010][2010],vis[2010],low[2010];
char s[2010][7];
int fun(char a[],char b[])
{
int sum=0;
for(int i=0;i<7;i++)
if(a[i]!=b[i])
sum++;
return sum;
}
int prim()
{
int minn,pos,ans=0;
memset(vis,0,sizeof(vis));
vis[0]=1;
pos=0;
for(int i=0;i<n;i++)
{
if(i!=pos)
{
low[i]=a[pos][i];
}
}
for(int i=1;i<n;i++)
{
minn=INF;
for(int j=0;j<n;j++)
{
if(!vis[j]&&low[j]<minn)
{
pos=j;
minn=low[j];
}
}
ans+=minn;
vis[pos]=1;
for(int j=0;j<n;j++)
{
if(!vis[j]&&low[j]>a[pos][j])
low[j]=a[pos][j];
}
}
return ans;
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;
for(int i=0;i<n;i++)
scanf("%s",s[i]);
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
a[i][j]=a[j][i]=fun(s[i],s[j]);
}
printf("The highest possible quality is 1/%d.\n",prim());
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/a972290869/p/4262079.html