Union-find algorithm