Find the shortest route from one named place to another. This makes use of assignments 2 or 3, but you may choose to make some modifications to simplify this assignment. As before, create a hash table of all named places and construct a graph (reasonably efficiently) from the intersections and connections files. When the program is ready it will ask the user for a starting point and a destination in the manner of the second assignment, but with a small twist: if the last "word" in a place name typed by the user is two characters long and matches one of the state abbreviations, assume it is the desired state and use the one matching named place. Otherwise proceed as with assignment 2, showing the user a list of possible states and accepting their selection. Once the starts and destination have been determined, find the shortest path between them, and print out every step (connection) along the way in something like this form: Start at 0.37 miles from Aardvark AL then take US1 3.45 miles South to Beetle AL then take US1 7.11 miles South-East to Crocodile AL ... etc ... then take AZ99 2.54 miles East to Zebra AZ Total distance 999.99 miles. (I think it's obvious that these names and distances are not real, so don't exepect to be able to duplicate these results) For the directions "East", "South-East" etc, you should only use the eight major points of the compass, fining the one that is closest to the true geographical distance. Your solution must be reasonably efficient, but correctness and clarity are the most important things to get right.