union find search
graph properties