Я гуглил Union-Find и приземлился по алгоритму DisjointSet.
После вызовов объединения генерируются следующие 3 набора:
7 -> 5, 8, 3
5 -> 11
3 -> 4
9 -> 6
6 -> 1
12 -> 2
2 -> 10
Find (6), Find (3), Find (11), Find (9)
Каждый из этих вызовов находит верхнего родителя по этому номеру, поэтому результат равен: 9, 7, 7, 9 НО.Это предполагает, что моя реализация Union соответствует фактической реализации Union.Те же самые наборы будут генерироваться любой реализацией, но их верхний родитель будет отличаться.