add union-find
update: .gitignore