In the winter, municipal snowplows must plow both sides of city streets that are bidirectional (two-way traffic) but they only make a single pass over unidirectional (one-way) streets.
We can represent city streets as the edges in a graph using nodes for intersections. Of course, it is a requirement that every street be plowed appropriately (once in each direction for bidirectional streets and only once in the proper direction for unidirectional streets).
Write a program that uses integers to represent nodes, and tuples (pairs of integers enclosed in parentheses, e.g., (4 7), to represent a street from node 4 to node 7, and a second tuple, (7 4)
to represent the fact that this is a bidirectional street). Assume that there is but a single snowplow and it must start and return to node 1. Your program must read a collection of tuples from a file and then produce driving instructions for the snowplow operator telling the sequence of intersections (nodes) to visit so that all the streets are appropriately plowed. If it is impossible to perform a correct plowing (some street would be left unplowed or some street would be plowed twice) your program must report this fact. Your program should repeatedly read collections of tuples and processes the information until an end-of-file is encountered. Your program will lose a significant number of points if your algorithm fails to work properly for cities (graphs) containing both bidirectional and unidirectional streets.
Your solution must include the data file that it uses for input. Remember NOT to use an absolute path to access the data file use a relative path. Be certain your data describes several different city street situations so that your program can demonstrate that it meets all the requirements.