I code the algorithm Depth First Search, but it infinite loop, what did i wrong?
I'm wrong in: Depth_first_search, is't it?Code:#include <iostream> #include <vector> using std::cout; using std::cin; using std::endl; const int maxx = 20; void Read_input_from_user(bool grid[][maxx], int vertices) { int u, v; for(int x = 0; x < vertices; ++x) { cout << "Enter u : \t"; cin >> u; u--; cout << "Enter v : \t"; cin >> v; v--; grid[u][v] = true; grid[v][u] = true; cout << "---------------------\n"; } } void Depth_first_search(bool grid[][maxx], std::vector<int> &trace, int nodes, int u) { for(int v = 0; v < nodes; ++v) { if((grid[u][v] == true) && trace[v] == 0) { trace[v] = u; //recursive step Depth_first_search(grid, trace, nodes, v); } } } void Trace_result(std::vector<int> &trace, int start, int end, int nodes) { cout << "From _nodes" << start + 1 << " you can visit :\n"; for(int v = 0; v < nodes; ++v) { if(trace[v] != 0) { cout << " _nodes : " << v + 1 << " , "; } } cout << "\n--------------------------------------------\n"; cout << "The path from " << start + 1 << " to " << end + 1 << '\n'; if(trace[end] == 0){ cout << "Unavailable.! to go to from " << end + 1 << " to -> " << start + 1 << '\n'; } else{ while(end != start) { cout << end + 1 << "<-"; end = trace[end]; } cout << start + 1 << endl; } } int main() { bool grid[maxx][maxx] = { false }; std::vector<int> trace(maxx, 0); int nodes, vertices; cout << "Please input the number of Node : \n"; cin >> nodes; cout << "Please input the number of Vertices : \n"; cin >> vertices; //Set value for all vertices. Read_input_from_user(grid, vertices); //Read the necessary path int starting_position, finishing_position; cout << "Please Input the Starting Node : \n"; cin >> starting_position; cout << "Please Input the Finishing Node : \n"; cin >> finishing_position; //Decrease to fit with index of C++ start from 0->size-1 starting_position--; finishing_position--; Depth_first_search(grid, trace, nodes, starting_position); Trace_result(trace, starting_position, finishing_position, nodes); system("pause"); return 0; }


Reply With Quote


