Final program that uses the list ADT for adjacency lists, the BFS queue, and the stack for reconstructing the path. The graph itself will be directed and made up of nodes containing their adjacency lists