Question: Hi, I have a little problem with my C++ code. I am asking since 2 days before and nobody could provide me the right answer.

Hi, I have a little problem with my C++ code. I am asking since 2 days before and nobody could provide me the right answer. The first data output it displays correctly but the second data output my program did not make the correct calculation as specified in the requeriments. Also, my program did not display the names of the airports from the minimum path it only displays "Total path: 1120" and it should display "Min Path: SF LA LONDON PARIS 920." Please provide a screenshot and I will rate your answer thanks.

Requeriments test data 2 expected output:

Data Set 1: Test Run 2

Enter Start Vertex: SF

Enter End Vertex : PARIS

Min Path: SF LA LONDON PARIS 920

My Wrong Output:

Enter Start Vertex : SF Enter End Vertex : PARIS Total path: 1120

Code:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

void addEdge(vector > adj[], int u, int v, int wt)

{

adj[u].push_back(make_pair(v, wt));

adj[v].push_back(make_pair(u, wt));

}

// Print adjacency list representaion ot graph

void printGraph(vector > adj[], int V)

{

int v, w;

for (int u = 0; u < V; u++)

{

cout << u << " - ";

for (auto it = adj[u].begin(); it != adj[u].end(); it++)

{

v = it->first;

w = it->second;

cout << v << " ="

<< w << " ";

}

cout << " ";

}

}

// This function mainly does BFS and prints the

// shortest path from src to dest. It is assumed

// that weight of every edge is 1

void findShortestPath(vector> adj[], int src, int dest, int V, int &total)

{

// Mark all the vertices as not visited

bool *visited = new bool[2 * V];

int *parent = new int[2 * V];

// Initialize parent[] and visited[]

for (int i = 0; i < 2 * V; i++)

{

visited[i] = false;

parent[i] = -1;

}

// Mark the current node as visited and enqueue it

visited[src] = true;

int smallest = INT_MAX;

for (int u = 0; u < V - 1; u++)

{

smallest = INT_MAX;

for (int j = 0; j < adj[u].size() - 1; j++)

{

if (adj[u][j].second < adj[u][j + 1].second && visited[adj[u][j].first] == false)

{

if (adj[u][j].second < smallest)

{

smallest = adj[u][j].second;

visited[adj[u][j].first] = true;

}

}

else if (visited[adj[u][j + 1].first] == false)

{

if (adj[u][j + 1].second < smallest)

{

smallest = adj[u][j + 1].second;

visited[adj[u][j + 1].first] = true;

}

}

if (adj[u][j].first == dest)

{

total += adj[u][j].second;

return;

}

else if (adj[u][j + 1].first == dest)

{

total += adj[u][j + 1].second;

return;

}

}

total += smallest;

}

}

// Driver code

int main()

{

vector> adj[6];

int V = 6;

string line;

ifstream myfile("file.txt");

vector vertex;

if (myfile.is_open())

{

while (getline(myfile, line))

{

// cout << line << ' ';

while (line != "-1")

{

char *token = strtok(const_cast(line.c_str()), " ");

token = strtok(NULL, " ");

vertex.push_back(token);

getline(myfile, line);

// cout << line << ' ';

}

V = vertex.size();

getline(myfile, line);

//cout << line << ' ';

while (line != "-1")

{

char *token = strtok(const_cast(line.c_str()), " ");

int u = atoi(token);

int v = atoi(strtok(NULL, " "));

int w = atoi(strtok(NULL, " "));

addEdge(adj, u, v, w);

getline(myfile, line);

// cout << line << ' ';

}

}

myfile.close();

}

else {

cout << "Unable to open file";

exit(1);

}

string start, end;

cout << "Enter Start Vertex : ";

cin >> start;

cout << "Enter End Vertex : ";

cin >> end;

int s, e;

int i = 0;

for (auto it = vertex.begin(); it != vertex.end(); it++)

{

if (*it == start)

s = i;

if (*it == end)

e = i;

i++;

}

// printGraph(adj, V);

int total = 0;

findShortestPath(adj, s, e, V, total);

cout << "Total path: " << total << endl;

printGraph(adj, V);

system("pause");

return 0;

}

File Required to run the program:

0 SF 1 LA 2 CHICAGO 3 NY 4 PARIS 5 LONDON -1 0 1 80 0 2 200 0 3 300 1 2 230 1 5 700 2 3 180 3 4 630 3 5 500 4 5 140 -1

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!