prim算法(poj1789)

来源:互联网 发布:linux远程桌面工具 编辑:程序博客网 时间:2024/05/21 13:55
#include<iostream>#include<stdio.h>#include<cstring>using namespace std;char str[2010][8];int dis[2010][2010];int mindis[2010];bool rem[2010];int n;int prim(){    memset(rem,false,sizeof rem);    memset(mindis,8,sizeof mindis);    int tool=0;    int s=0;    int sum=0;    for(int u=1;u<n;u++)    {       intmist=8;     rem[s]=true;    for(int i=1;i<n;i++)    {       if(!rem[i])       {       mindis[i]=min(mindis[i],dis[s][i]);       if(mindis[i]<mist)       {          mist=mindis[i];          tool=i;       }       }    }    s=tool;    sum+=mist;    }    return sum;}int main(){   while(scanf("%d",&n)!=EOF&&n)    {       for(int i=0;i<n;i++)       {          scanf("%s",str[i]);       }       for(int i=0;i<n;i++)       for(int j=i+1;j<n;j++)       {           intnum=0;           for(int k=0;k<7;k++)          if(str[i][k]!=str[j][k])          num++;          dis[i][j]=dis[j][i]=num;       }       printf("The highest possible quality is1/%d.\n",prim());    }    return 0;}

0 0
原创粉丝点击