zoj 2158 Truck History

来源:互联网 发布:excel2007办公软件 编辑:程序博客网 时间:2024/05/16 18:44
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int inf=1<<24;int dp[2000+5][2000+5];char s[2000+5][20+5];int main(){    int i,j,k,u,v,w,n,low[2000+5],q;    while(~scanf("%d",&n))    {        //getchar();        if(n==0) break;        for(i=0;i<n;i++)        {           scanf("%s",s[i]);        }        for(i=0;i<n;i++)            for(j=i;j<n;j++)        {            if(i==j) { dp[i][j]=inf;continue;}            q=0;            for(k=0;k<7;k++)                if(s[i][k]!=s[j][k]) q++;            dp[i][j]=dp[j][i]=q;        }        for(i=0;i<n;i++)            low[i]=dp[0][i];        low[0]=-1;        q=0;        for(i=1;i<n;i++)        {            int t=inf;            for(j=0;j<n;j++)            {                if(low[j]!=-1&&low[j]<t)                {                    k=j;                    t=low[j];                }            }            q+=low[k];            low[k]=-1;            for(j=0;j<n;j++)                low[j]=min(low[j],dp[k][j]);        }        printf("The highest possible quality is 1/%d.\n",q);    }    return 0;}
0 0