## Error: infinite loop in my code(Depth First Search)

I code the algorithm Depth First Search, but it infinite loop, what did i wrong?
Code:
```#include <iostream>
#include <vector>
using std::cout;
using std::cin;
using std::endl;
const int maxx = 20;
{
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.

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;
}```
I'm wrong in: Depth_first_search, is't it?