Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hello, I just need to fix one little thing in my code. My code is about finding

ID: 3718998 • Letter: H

Question

Hello, I just need to fix one little thing in my code. My code is about finding the shortest path between cities from a file input by graphs. But when I try to debug the program I have the error using Code Blocks IDE as a compiler. The error is displayed below:

Code:

#include <iostream>

#include <cstdlib>

#include <cctype>

#include <vector>

#include <limits.h>

#include <string>

#include <cstring>

#include <list>

#include <algorithm>

#include <fstream>

using namespace std;

void addEdge(vector <pair<int, int> > 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<pair<int, int> > 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<pair<int, int>> 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<pair<int, int>> adj[6];

int V = 6;

string line;

ifstream myfile("file.txt");

vector<string> vertex;

if (myfile.is_open())

{

while (getline(myfile, line))

{

// cout << line << ' ';

while (line != "-1")

{

char *token = strtok(const_cast<char *>(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<char *>(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.txt

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

Expected output:

Enter Start Vertex: SF

Enter End Vertex :LONDON

Min Path: SF LA LONDON 780

Picture showing the error:

terminate called after throwing an instance of 'std::logic_error what(): basic_string::_M_construct null not valid This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. test.exe test.exe has stopped working A problem caused the program to stop working correctly Windows will close the program and notify you if a solution is available. DebugClose program

Explanation / Answer

A small mistake happended that is in findShortestPath function your taking int variable with ampersnd(&) that is wrong remove that ampersnd keep int total only......that is the issue happened........Happy Coding!!..............if issue wont get resolved means ping me in commenty box

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote