zoukankan      html  css  js  c++  java
  • Union found

     Use array.

    class UnionFound {
    public:
        vector<int> v;
        int cnt;
        UnionFound(int n) {
            v = vector<int>(n);
            for (int i = 0; i < n; i++)
                v[i] = i;
            cnt = n;
        }
        int findParent(int i) {
            if (v[i] == i)  return i;
            v[i] = findParent(v[i]);
            return v[i];
        }
        void Union(int p, int c) {
            int pp = findParent(p);
            int cp = findParent(c);
            if (pp != cp) {
                v[cp] = pp;
                cnt--;
            }
        }
    };

     Use map.

    class UnionFound {
    public:
        unordered_map<int,int> parents;
        int cnt = 0;
        void AddItem(int i) {
            parents[i] = i;
            cnt++;
        }
        int GetParent(int i) {
            if (parents[i] == i)    return i;
            return parents[i] = GetParent(parents[i]);
        }
        void Union(int p, int c) {
            int pp = GetParent(p);
            int cp = GetParent(c);
            if (pp != cp) {
                parents[cp] = pp;
                cnt--;
            }
        }
    };
  • 相关阅读:
    修改用户密码,权限
    域渗透
    跨域
    目录
    C中的extern和static
    XSS进阶
    SQL injection
    双重指针学习笔记
    文件上传学习笔记
    Hello Python
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/8993630.html
Copyright © 2011-2022 走看看