Problem
A third possible representation of a graph is to use the set class to contain the edges. By defining a comparator that first compares on the source vertex and then the destination vertex, we can use the lower_bound and upper_bound functions to obtain iterators that span the edges originating at a given vertex. Design and implement a class that meets the requirements of the Graph interface and uses a set to hold the edges.