zoukankan      html  css  js  c++  java
  • poj 1789 Truck History(最小生成树 prim)

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

    大意:每个卡车都有自己的编号,由七位字母组成

    d(to,td) is the distance of the types指t0 和 td卡车编号字母不同的个数,即点t0和点td的权

    最好得衍生方案是是的总权值最小,即最小生成树

    用的prim

    View Code
    #include <iostream>
    #include<cstdio>
    #include<cstring>
    #define inf 0x7fffffff
    using namespace std;
    char str[2005][7];
    int map[2005][2005];
    int n;
    int cmp(char *s1,char *s2)
    {
        int i,num=0;
        for(i=0;i<7;i++)
        {
            if(*(s1+i)!=*(s2+i))
            num++;
        }
        return num;
    }
    void prim()
    {
        int vis[2005];
        int dis[2005];
        int i,j;
        memset(vis,0,sizeof(vis));
        vis[0]=1;
        for(i=1;i<n;i++)
        {
            dis[i]=map[0][i];
        }
        int min;
        int pos;
        int ans=0;
        for(i=0;i<n;i++)
        {
            min=inf;
            for(j=0;j<n;j++)
            {
                if(min>dis[j]&&!vis[j])
                {
                    pos=j;
                    min=dis[j];
                }
            }
            if(min==inf)
            break;
            ans+=min;
            vis[pos]=1;
            for(j=0;j<n;j++)
            {
                if(map[pos][j]<dis[j]&&!vis[j]&&map[pos][j]>0)
                {
                    dis[j]=map[pos][j];
                }
            }
        }
        printf("The highest possible quality is 1/%d.\n",ans);
    }
    int main()
    {
        int i,j;
        while(scanf("%d",&n)!=EOF)
        {
            if(n==0)
            break;
            getchar();
            for(i=0;i<n;i++)
            {
                gets(str[i]);
            }
            memset(map,0,sizeof(map));
            for(i=0;i<n-1;i++)
            {
                for(j=i+1;j<n;j++)
                {
                    map[i][j]=cmp(str[i],str[j]);
                    map[j][i]=map[i][j];
                }
            }
            prim();
        }
        return 0;
    }

     

  • 相关阅读:
    uni-app-数据缓存
    uni-app-网络请求
    uni-app-上拉加载
    uni-app-下拉刷新
    uni-app-生命周期
    uni-app字体图标
    uni-app-样式
    [Python] ValueError: Unknown resampling filter
    [Python]列表复制以及切片[:][::]解析
    LeetCode 29. 两数相除
  • 原文地址:https://www.cnblogs.com/wanglin2011/p/2800283.html
Copyright © 2011-2022 走看看