zoukankan      html  css  js  c++  java
  • POJ1789 Truck History 最小生成树

    计算整个汽车演化过程中所要改变的最少的字符数。改变的字符数的计算方式为1-7位不同位的个数。

    代码如下:

    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    using namespace std;
    
    int N, pos, set[2005];
    
    char s[2005][10];
    
    struct Node
    {
        int x, y, diff;
        bool operator < (Node t) const
        {
            return diff < t.diff;
        }
    }e[4000005];
    
    int diff(int x, int y)
    {
        int cnt = 0;
        for (int i = 0; i < 7; ++i) {
            if (s[x][i] != s[y][i]) {
                ++cnt;
            }
        }
        return cnt;
    }
    
    int find(int x)
    {
        return set[x] = x == set[x] ? x : find(set[x]);
    }
    
    void merge(int x, int y) 
    {
        set[x] = y;
    }
    
    int main()
    {
        int a, b, ans, cnt;
        while (scanf("%d", &N), N) {
            pos = ans = cnt = 0;
            for (int i = 1; i <= N; ++i) {
                scanf("%s", s[i]); 
                set[i] = i;
            }
            for (int i = 1; i <= N; ++i) {
                for (int j = i+1; j <= N; ++j) {      
                    ++pos;
                    e[pos].x = i, e[pos].y = j;
                    e[pos].diff = diff(i, j);;
                }
            }
            sort(e+1, e+1+pos);
            for (int i = 1; i <= pos; ++i) {
                a = find(e[i].x), b = find(e[i].y);
                if (a != b) {
                    printf("%d %d\n", e[i].x, e[i].y);
                    ++cnt;
                    merge(a, b);
                    ans += e[i].diff;
                    if (cnt == N-1) {
                        break;
                    }
                }
            }
            printf("The highest possible quality is 1/%d.\n", ans);
        }
        return 0;   
    }
  • 相关阅读:
    java之 向上转型与向下转型
    java之 惰性初始化
    mysql 学习网站
    history of program atan2(y,x)和pow(x,y)
    atom 之 前端必备插件
    js之正则表达式
    Django之模型层
    每日作业5/28
    每日作业5/27
    每日作业5.26
  • 原文地址:https://www.cnblogs.com/Lyush/p/2572080.html
Copyright © 2011-2022 走看看