Union-find データ構造の C 実装 (セットをツリーとして使用)。この実装は、ランクによるパス圧縮と結合を特徴とするため、操作あたりの償却時間は O(alpha(n)) になります。
union_find_elem_t * make_set ( void * element );
union_find_elem_t * find ( union_find_elem_t * element );
union_find_elem_t * merge ( union_find_elem_t * a , union_find_elem_t * b );