...

I just don't understand how to construct the graph. So far, I have a Graph class, a Vertex class, and an Edge class. If my vertex class is simply a name and an array of incident edges, then what is my Edge class?

...

An Edge class isn't necessary. Just use a

**java.util.List** in your Vertex class that holds references to the neighbouring Vertices.

And your Graph class has a

**java.util.List **with Vertex objects of course.

Another approach is to use an implementation of a

**java.util.Map<Key, Value>**,where the key is a (unique) Vertex and the value is a

**java.util.List** containing the Vertex's neighbours.

Good luck.