#include <iostream>

#include "disjset.h"

using namespace std;


// Test main; all finds on same output line should be identical
int main( )
{
    long numElements = 128;
    long numInSameSet = 16;

    DisjSet ds( numElements );
    long set1, set2;

    for( long k = 1; k < numInSameSet; k *= 2 )
    {
        for( long j = 0; j + k < numElements; j += 2 * k )
        {
            set1 = ds.find( j );
            set2 = ds.find( j + k );
            ds.unionSets( set1, set2 );
        }
    }

    for( long i = 0; i < numElements; i++ )
    {
        cout << ds.find( i ) << "*";
        if( i % numInSameSet == numInSameSet - 1 )
        {
            cout << endl;
        }
    }
    cout << endl;

    return 0;
}

