Problem 16: Equivalence classes.


Suppose that we have a set of N objects {a[i]}.  We are also given M statements
of the form a[i]  == a[j]  .  Let us assume that the objects have been mapped into
the integers 1 .. N by some manner.  For example, with N = 19 and M = 16, we
might have the following objects and relationships:
       18 = 12        16 = 14         8 = 18        16 =  6
        6 = 10         9 =  1        17 =  4        16 = 17
        8 =  2         3 = 13         9 = 11         3 =  8
       11 =  5         7 = 19         3 =  9        19 = 15
Write a program that reads M and N, followed by the M pairings i = j,
with i and j both in the range 1 .. N.  Your program should compute which
objects fall into which classes of equivalent objects, and should then
print out these classes, as follows:  objects sorted within each class,
and classes printed in order of their first members.  Thus, for the example
above, the output would be:
          1   2   3   5   8   9  11  12  13  18
          4   6  10  14  16  17
          7  15  19

