Estructura de datos de búsqueda de unión

Para muchos problemas, veo que la solución recomendada es utilizar una estructura de datos de búsqueda de unión. Intenté leer al respecto y pensar cómo se implementa (usando C ++). Mi comprensión actual es que no es más que una lista de conjuntos. Entonces, para encontrar a qué conjunto pertenece un elemento, necesitamosn*log n operaciones. Y cuando tenemos que realizar la unión, tenemos que encontrar los dos conjuntos que deben fusionarse y hacer unset_union en ellos. Esto no me parece terriblemente eficiente. ¿Mi comprensión de esta estructura de datos es correcta o me falta algo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta