• hdu 1856并查集


    很简单的并查集,不过第一次交居然超内存,把height数组改为short int就过了~~

    /*
     * hdu1856/win.cpp
     * Created on: 2012-7-18
     * Author    : ben
     */
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <iostream>
    #include <algorithm>
    #include <string>
    using namespace std;
    const int MAXM = 10000010;
    int myset[MAXM], mysum[MAXM];
    short int myheight[MAXM];
    int N, M = MAXM - 1, ans;
    inline int mymax(int a, int b) {
        return a > b ? a : b;
    }
    void initset() {
        for(int i = 0; i <= M; i++) {
            myset[i] = i;
            myheight[i] = 1;
            mysum[i] = 1;
        }
    }
    int myfind(int x) {
        while (myset[x] != x) {
            x = myset[x];
        }
        return x;
    }
    void mymerge(int a, int b) {
        if(myheight[a] == myheight[b]) {
            myheight[a]++;
            myset[b] = a;
            mysum[a] += mysum[b];
            ans = mymax(ans, mysum[a]);
        }else if(myheight[a] < myheight[b]) {
            myset[a] = b;
            mysum[b] += mysum[a];
            ans = mymax(ans, mysum[b]);
        }else {
            myset[b] = a;
            mysum[a] += mysum[b];
            ans = mymax(ans, mysum[a]);
        }
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.in", "r", stdin);
    #endif
        int a, b;
        while(scanf("%d", &N) == 1) {
            initset();
            ans = 1;
            for(int i = 0; i < N; i++) {
                scanf("%d%d", &a, &b);
                a = myfind(a);
                b = myfind(b);
                if(a != b) {
                    mymerge(a, b);
                }
            }
            printf("%d\n", ans);
        }
        return 0;
    }
  • 相关阅读:
    gems gems gems
    poj 6206 Apple
    lightoj1341唯一分解定理
    lightoj1370欧拉函数
    约瑟夫环lightoj1179
    拓展欧几里得算法
    RMQ算法
    poj1502MPI Maelstrom
    poj1860Currency Exchange
    生成全排列
  • 原文地址:https://www.cnblogs.com/moonbay/p/2599102.html
Copyright © 2020-2023  润新知