simple implementations of data structures and graph algorithms