zoukankan      html  css  js  c++  java
  • POJ 1789(最小生成树)

    这题要把给的字符串变成边的权值

    #include <cstdio>
    #include <iostream>
    #include <queue>
    #include <string>
    using namespace std;
    
    #define sf scanf
    #define pf printf
    #define debug printf("!
    ")
    #define blank printf("
    ")
    #define mem(a,b) memset(a,b,sizeof(a))
    
    const int MaxN = 2010;
    const int INF = 1<<27;
    
    int p[MaxN];
    
    char str[2010][8];
    
    int w[MaxN*MaxN],r[MaxN*MaxN],u[MaxN*MaxN],v[MaxN*MaxN];
    
    int m,n;
    
    int find(int x){return p[x]==x?x:p[x]=find(p[x]);}
    
    
    int cmp(const int a,const int b)
    {
        return w[a]<w[b];
    }
    
    int kruskal()
    {
        int ans = 0,i;
    
        for(i = 0;i<n;i++) p[i] = i;
        for(i = 0;i<m;i++) r[i] = i;
        
        sort(r,r+m,cmp);
    
        for(i = 0;i<m;i++)
        {
            int e = r[i];
            int x = find(u[e]);
            int y = find(v[e]);
            if(x!=y)
            {
                ans+=w[e];p[x] = y;
            }
        }
        return ans;
    }
    
    int weight(int i,int j)
    {
        int w = 0,k;
        for(k = 0;k<7;k++)
            if(str[i][k]!=str[j][k])
                w++;
        return w;
    }
    
    
    int main()
    {
        int i,j;
        while(~sf("%d",&n),n)
        {
            m = 0;
            mem(u,0);
            mem(v,0);
            mem(w,0);
    
            for(i = 0;i<n;i++)
            {
                sf("%s",str[i]);
            }
    
            for(i = 0;i<n;i++)
            {
                for(j=i+1;j<n;j++)
                {
                    int tmp = weight(i,j);
                    if(tmp==0)
                        break;
                    u[m] = i;
                    v[m] = j;
                    w[m++] = tmp;
                }
            }
            int ans = kruskal();
            pf("The highest possible quality is 1/%d.
    ",ans);
    
        }
    
        return 0;
    }
  • 相关阅读:
    ICMPv6 Type 和 rfc
    Redis学习
    Vue学习(一)
    《一线架构师实践指南》读后感(五)
    《一线架构师实践指南》读后感(四)
    Stream流
    泛型
    《架构漫谈》读后感
    《一线架构师实践指南》读后感(三)
    《一线架构师实践指南》读后感(二)
  • 原文地址:https://www.cnblogs.com/qlky/p/5154797.html
Copyright © 2011-2022 走看看