
   class Sets
   {
       private:
          int *p, n;
       public:
          Sets(int Size): n(Size)
          {   p = new int[n+1];
              for (int i=0;i<=n;i++)
                 p[i]=-1;
          }
          ~Sets() {delete []p;}
          void SimpleUnion(int i, int j);
          int SimpleFind(int i);
   };

   void Sets::SimpleUnion(int i, int j)
   {   p[i] = j;   }

   int Sets::SimpleFind(int i)
   {   while (p[i]>=0) i = p[i];
       return i;
   }

