Solución de tiempo
Obviando las soluciones muy elementales, que requieren tiempo para alguna de las dos operaciones, una solución sencilla es tener nodos, uno por cada elemento , y que cada clase de equivalencia sea un árbol formado por los nodos de los elementos participantes. En estos árboles, los hijos apuntan a su padre, y la raíz es el representante de la clase. La operación consiste entonces en recorrer los ancestros sucesivos de hasta llegar a la raíz , y entonces responder . La operación , para dos raíces e , cuelga como un hijo más de (es decir, hace que sea el padre de ) o vice versa, eligiendo siempre colgar el árbol con menos nodos del árbol con más nodos (cada nodo conoce el tamaño de su subárbol, lo que es fácil de mantener cuando se le agrega otro subárbol como hijo).
--> imagen
Es fácil ver por inducción que, en los árboles resultantes, un árbol de altura tiene nodos. Esto vale para los nodos iniciales, que definimos de altura y que contienen nodos. Ahora consideremos dos árboles de y nodos, y alturas y , respectivamente. Por hipótesis inductiva se cumple que y . Supongamos que , por lo que el primer árbol se cuelga del segundo. El árbol resultante tiene entonces nodos y su altura es . Si la altura es , la tesis inductiva se cumple porque . Si, en cambio, la altura es , la tesis inductiva se cumple porque .
Como un árbol tiene a lo más nodos, su altura no puede ser más de , por lo cual la operación cuesta tiempo . Por otro lado, la operación es .