an efficient algorithm for the " optimal " stable marriage .
A data structure for dynamic trees