Я ожидал, что такая полезная структура данных будет включена в C++ Standard Library
но я не могу найти это.
Это не так, но есть один импульс: http://www.boost.org/doc/libs/1_64_0/libs/disjoint_sets/disjoint_sets.html, так что если вы хотите стандартную реализацию, я бы порекомендовал это.
Других решений пока нет …