count number of connected components in an undirected graph