lemon/unionfind.h
changeset 2550 f26368148b9c
parent 2548 a3ba22ebccc6
child 2551 5004899aa870
equal deleted inserted replaced
17:a91ac03baa60 18:926387457494
   960 
   960 
   961     typedef _Comp Comp;
   961     typedef _Comp Comp;
   962 
   962 
   963   private:
   963   private:
   964 
   964 
   965     static const int cmax = 3;
   965     static const int cmax = 16;
   966 
   966 
   967     ItemIntMap& index;
   967     ItemIntMap& index;
   968 
   968 
   969     struct ClassNode {
   969     struct ClassNode {
   970       int parent;
   970       int parent;
  1122       int kd = nodes[jd].left;
  1122       int kd = nodes[jd].left;
  1123       while (kd != -1) {
  1123       while (kd != -1) {
  1124         nodes[kd].parent = id;
  1124         nodes[kd].parent = id;
  1125         kd = nodes[kd].next;
  1125         kd = nodes[kd].next;
  1126       }
  1126       }
       
  1127       nodes[id].right = nodes[jd].right;
  1127     }
  1128     }
  1128 
  1129 
  1129     void split(int id, int jd) {
  1130     void split(int id, int jd) {
  1130       int kd = nodes[id].parent;
  1131       int kd = nodes[id].parent;
  1131       nodes[kd].right = nodes[id].prev;
  1132       nodes[kd].right = nodes[id].prev;