Using Java Collections - it is o.k. to use things from the Java collections (or really any part of Java) for any part of this assignment. If this assignment has not yet forced you to take a look at the Java Collections API then you are probably not thinking big picture enough yet. At the very least you might need to look at the Collection and List Interfaces to see what operations are allowable on them and what classes implement those interfaces.
Using a priority queue is extra credit - you are not required to use a priority queue for this assignment. Feel free to use any structure you would like to keep track of distances, and then search it to find the one with the smallest distance that is also unknown. You are welcome to use a priority queue, but are not required to do so.
Creating more data structures - In MyGraph we have set up two simple data members - myEdges and myVertices that are references to Collections. A collection of vertices and edges is really just the simplest way to represent a graph. It has all of the info you need, it just might not be good enough for answering some of the questions you have to answer for this assignment (isAdjacent? adjacentVertices?, shortestpath?) in the most efficient way. Slide 13 from this lecture lists 3 different ways to represent a graph. Looking at this slide, you are given a "number 0" representation. There is a good chance that you will need to create one of these other representations as well. Feel free to add more data members and methods to MyGraph, as well as to Vertex and Edge. Also be sure to think about how you can make use of parts of the Java collection classes. For example, it seems likely that you will need a Map of some sort somewhere.
Unique vertex labels - It is fine to assume that vertices will have unique labels.
Representing Infinity - For Dijkstra's, one possibility for representing infinity is to use Integer.MAX_VALUE.
Modifying files - You are free to add things to Vertex.java, Edge.java, or MyGraph.java, just don't remove anything that is currently there. You should not change the interface Graph.java.
Public and Private Fields - although in general we try to avoid creating public fields for classes, for this assignment we will allow public fields in the Vertex and Edge classes. If you add more fields to the vertex or edge classes, it will be allowable to make those fields public. Please do not change the settings on the current fields in those classes. Fields in other classes should not be made public.
Equals and hashcode - for the most part you should be able to ignore these methods that have been included in the Vertex and Edge classes. If you add more fields to the Vertex or Edge classes, it is o.k. to leave the equals method as is unless you need to modify it for your own reasons.
equals and multiple copies of Vertexes- You may want to refer to your old notes on the equals method from cse 143. Remember that this allows us to do a comparison of values (e.g. do two Vertex objects have the same label) as opposed to just checking if two things refer to the exact same object. This is particularly important in this assignment because we have multiple copies of the same Vertex around. Each edge contains the two Vertices that are its end points. Take a look at Paths.java to see how new Vertex objects are created as the edge.txt and vertex.txt files are read in. If there are 3 edges that start or end at DEN, then there will be (at least) four copies of the Vertex DEN in your program. One for the vertex itself when read in from the text file, and one for each time it appears in an edge. Be sure you are aware of this! Note that == is not .equals.
Printing out Collections- As you are debugging your program you may find it useful to print out your data structures. There are toString methods for Edge and Vertex. Remember that things like ArrayLists and Sets can also be printed out with a single println.