Estrutura de dados Union-find

Para muitos problemas, vejo que a solução recomendada é usar uma estrutura de dados de localização de união. Tentei ler sobre isso e pensar em como ele é implementado (usando C ++). Meu entendimento atual é que nada mais é do que uma lista de conjuntos. Portanto, para descobrir a qual conjunto um elemento pertence, exigimosn*log n operações. E quando temos que realizar a união, temos que encontrar os dois conjuntos que precisam ser mesclados e fazer umset_union neles. Isso não parece muito eficiente para mim. O meu entendimento dessa estrutura de dados está correto ou estou faltando alguma coisa?

questionAnswers(4)

yourAnswerToTheQuestion