zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Ch04-文字列表的设计
    ch03-文字版面的设计
    ch02-HTML的基本概念
    【转】网站建设常用工具
    XSY1036 [Apio2012]派遣
    HDU1512 Monkey King
    快速构造FFT/NTT
    支配树学习笔记
    BZOJ1026[SCOI2009]windy数
    扩展欧几里得算法(exGCD)学习笔记
  • 原文地址:https://www.cnblogs.com/moonbay/p/2599102.html
Copyright © 2011-2022 走看看