Структура данных Union-find

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

12
задан Asha 28 November 2011 в 17:55
поделиться