POJ1789【CTU Open 2003】Truck History

来源:互联网 发布:网络问卷调查怎么总结 编辑:程序博客网 时间:2024/05/22 03:35

题目链接:http://poj.org/problem?id=1789


【分析】

    最小生成树不解释。


【代码】

#include <cstdio>#include <cstring>using namespace std;const int maxn=2010,inf=~0U>>1;char s[maxn][10];int dist[maxn][maxn],d[maxn],vis[maxn];int n,ans;void Build_Graph(){memset(dist,0,sizeof(dist));for (int i=1;i<=n;i++)for (int j=1;j<=n;j++)for (int k=0;k<7;k++)dist[i][j]+=s[i][k]!=s[j][k];}void Prim(){memset(vis,0,sizeof(vis));for (int i=0;i<=n;i++) d[i]=inf;int now=1;d[now]=0;for (int time=1;time<n;time++){vis[now]=1;for (int i=1;i<=n;i++) if (!vis[i] && d[i]>dist[now][i]) d[i]=dist[now][i];now=0;for (int i=1;i<=n;i++) if (!vis[i] && d[i]<d[now]) now=i;}int ans=0;for (int i=1;i<=n;i++) ans+=d[i];printf("The highest possible quality is 1/%d.\n",ans);}int main(){while (scanf("%d",&n) && n){for (int i=1;i<=n;i++) scanf("%s",s[i]);Build_Graph();Prim();}return 0;}


0 0
原创粉丝点击