poj 1789 最小生成树变形

来源:互联网 发布:苦海翻起爱恨 知乎 编辑:程序博客网 时间:2024/06/06 07:07

题目链接:

http://poj.org/problem?id=1789


输入输出:

4aaaaaaabaaaaaaabaaaaaaabaaaa0

The highest possible quality is 1/3.

代码:

#include<stdio.h>//454ms#include<iostream>#include<math.h>#include<algorithm>#include<string.h>using namespace std;#define maxv 2010#define inf 99999999int v,cost[maxv][maxv],mincost[maxv],sum;bool used[maxv];char s[maxv][9];int prim(){for(int i=0;i<v;++i){mincost[i]=inf;used[i]=0;}mincost[0]=0;int res=0;while(1){int j=-1;for(int i=0;i<v;++i){if(!used[i]&&(mincost[i]<mincost[j]||j==-1)) j=i;}if(j==-1) break;used[j]=1;res+=mincost[j];for(int i=0;i<v;++i){mincost[i]=min(mincost[i],cost[j][i]);}}return res;}int main(){while(scanf("%d",&v),v){for(int i=0;i<v;++i){scanf("%s",s[i]);for(int j=0;j<i;++j){sum=0;for(int k=0;k<7;++k){if(s[i][k]!=s[j][k]) ++sum;}cost[i][j]=cost[j][i]=sum;}}printf("The highest possible quality is 1/%d.\n",prim());}return 0;}






0 0
原创粉丝点击