Graph is a base class. A Graph is a container class
responsible for holding the vertex set and edge set. The class is
responsible for:
- providing methods to add
vertices and edges.
- accessing the vertices and
edges.
All the methods for the class are declared as
virtual to allow subclasses to be introduced.