Объединение найти структуру данных

Я вижу, что для многих проблем рекомендуется использовать структуру данных union-find. Я попытался прочитать об этом и подумать о том, как это реализовано (с использованием C ++). В настоящее время я понимаю, что это не что иное, как список наборов. Итак, чтобы найти, к какому набору принадлежит элемент, нам нужноn*log n операции. И когда мы должны выполнить объединение, то мы должны найти два набора, которые необходимо объединить, и сделатьset_union на них. Это не выглядит ужасно эффективным для меня. Правильно ли я понимаю эту структуру данных или я что-то упустил?

Ответы на вопрос(4)

Ваш ответ на вопрос