**Programming Problem**
Code the *BFS (Breadth First Search)* algorithm from Chapter 22 in the text. (see the attached file for the algorithm) Then run the *Print*-*Path* algorithm from the same chapter. The graph data will be input from a file.
Your program should prompt the user for a source vertex when the *BFS* is run. Using the same source, it should also prompt the user for a destination vertex when *Print*-*Path* is run.
** **
**Submission requirements**
Name the driver file **[login to view URL]**. The implementation file **[login to view URL]** and the header file **graph.h**
**Program requirements**
1. Read the data file from the command line. It will be in argv[1]. Thus, the header of your **main** function should look like this.
int main(int argc, char* argv[ ])
2. Display the graph as an adjacency list **_or_** adjacency matrix with vertex labels, then prompt the user to enter a source vertex (for BFS and Print-Path) and a destination vertex (for Print-Path).
3. Run your BFS algorithm from the chosen source.
4. Run Print-Path and display the entire path. For example, **s-t-u-x** where **s** is the source (root) and **x** is the destination.
**Format of data file**
You may assume the data will be in the following format. The data is for an undirected graph.
4 5 undirected // Number of vertices, space, number of edges, space, graph type
r s t z // Space delimited vertex labels
r s // Edge (r,s)
r z
r t
s t
t z
**Additional Requirements**:
Be sure to use good program style (pre/post conditions, header comments, sparse code comments, self-documenting names, whitespace, indentation, etc.).
## Deliverables
C++ source code for the above problem.
## Platform
The code
**_must_** compile on a g++ compiler.
*_Please feel free to ask me any questions that you might have about the BFS algorithm or the programming assignment_*.
**_THE DUE DATE FOR THIS IS SUNDAY JULY 25TH 2004_**.