• POJ 1789-Truck History


    题目链接:Truck History


    题意就是N个卡车的型号,一代一代的发展,两辆卡车的型号中 不同字母的个数代表着两辆卡车的距离,确定一个点。遍历到全部的点,使之这个距离最小。

    非常明显最小生成树,稠密图。1次AC,水过

    PS:厚颜无耻的先看了Discuss才做的,否则我也漏“.”。罪过罪过



    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <algorithm>
    const int N = 2001;
    const int INF = 1e8;
    using namespace std;
    int mapp[N][N];
    int n,ans;
    int dis[N];
    bool vis[N];
    char a[N][8];
    void init()
    {
        memset(vis,0,sizeof(vis));
        memset(dis,0,sizeof(dis));
    
    }
    int SUM(int x,int y)
    {
        int sum = 0;
        for(int i = 0;i<7;i++)
        {
            if(a[x][i]!=a[y][i])
                sum++;
        }
        return sum;
    }
    void Prim()
    {
         ans = 0;
         int pos,minn;
        for(int i = 0;i<n;i++)
            dis[i] = mapp[0][i];
        vis[0] = true;
    
        for(int i = 0;i<n;i++)
        {
            minn = INF;
            for(int j = 0;j<n;j++)
            {
                if(!vis[j] && dis[j]<minn)
                {
                    pos = j;
                    minn = dis[j];
                }
            }
            if(minn!=INF)
            ans += minn;
            vis[pos] = true;
            for(int j = 0;j<n;j++)
            {
                if(!vis[j] && dis[j] > mapp[pos][j])
                    dis[j] = mapp[pos][j];
            }
        }
    }
    int main()
    {
        while(cin>>n && n)
        {
            init();
            for(int i = 0;i<n;i++)
                cin>>a[i];
            int i,j;
            for( i = 0;i<n;i++)
            {
                for(j = 0;j<n;j++)
                {
                    if(i==j)
                        mapp[i][j] = 0;
                    else
                    mapp[i][j] = SUM(i,j);
                }
            }
            Prim();
            cout<<"The highest possible quality is 1/"<<ans<<'.'<<endl;
        }
        return 0;
    }


  • 相关阅读:
    SQL_Server_2005_字符串函数(描述及实例)
    固定在左右两侧不动的广告条 样式
    jquery 浏览器判断
    sqlserver 2005无限极分类 获取 所有子分类
    asp.net使用treeview控件,递归加载
    C++day15 学习笔记
    Win32编程day02 学习笔记
    Win32编程day04 学习笔记
    C++day16 学习笔记
    Win32编程day05 学习笔记
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5184744.html
Copyright © 2020-2023  润新知