Undirected graph implementation, also includes a least spanning tree generator