zoukankan      html  css  js  c++  java
  • poj 1789 prime

    链接:Truck History - POJ 1789 - Virtual Judge  https://vjudge.net/problem/POJ-1789

    题意:先给出一个n,代表接下来字符串的个数,接下来n个字符串,每个字符串长度为7,没有完全相同的字符串,字符串之间的距离是两个字符串里不同字符的个数(相同位置两两对比),然后求出从某个点到其他点距离和的最小值(分子一直是1,Q越小,1/Q越大),其实就是叫我们求出最小生成树,先字符串两两相比建图,然后求最小生成树。

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<map>
    using namespace std;
    #define MAXN 2005
    #define INF 0x3f3f3f
    char str[MAXN][8];
    int edge[MAXN][MAXN];
    int vis[MAXN],dis[MAXN];
    int n,m,k,t,ans;
    int dist(int a,int b)
    {
        int ans=0;
        for(int i=0;i<7;i++)
        {
            if(str[a][i]!=str[b][i])
            ans++; 
        } 
        return ans;
    }
    void build()  //建图
    {
        memset(edge,0x3f,sizeof(edge));
        for(int i=0;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                edge[i][j]=edge[j][i]=dist(i,j);
            }
        }
    }
    void prime()    //套模板的 
    {
        memset(vis,0,sizeof(vis));
        for(int i=0;i<n;i++)
        dis[i]=edge[i][0];
        vis[0]=1;
        for(int i=0;i<n-1;i++)
        {
            int min1=INF,u=-1;
            for(int j=0;j<n;j++)
            {
                if(!vis[j]&&dis[j]<min1)
                {
                    min1=dis[j];
                    u=j;
                }
            }
            if(u==-1)
            return;
            vis[u]=1;
            ans+=min1;
            for(int j=0;j<n;j++)
            {
                if(!vis[j]&&dis[j]>edge[u][j])
                dis[j]=edge[u][j];
            }
        }
    }
    int main()
    {
        while((cin>>n)&&n)
        {
            for(int i=0;i<n;i++)
             cin>>str[i];
            build();    //建图 
            ans=0;        
            prime();
            cout<<"The highest possible quality is 1/"<<ans<<'.'<<endl;
         } 
         return 0;
    }
  • 相关阅读:
    Dom解析
    几道算法水题
    Bom和Dom编程以及js中prototype的详解
    sqlserver练习
    java框架BeanUtils及路径问题练习
    Java的IO以及线程练习
    在数据库查询时解决大量in 关键字的方法
    SaltStack--配置管理
    SaltStack--远程执行
    SaltStack--快速入门
  • 原文地址:https://www.cnblogs.com/6262369sss/p/9394732.html
Copyright © 2011-2022 走看看