DSU w/ path compression and union by rank