12 void reverse(vector<int> &path, 
int start, 
int end, 
int n)
    14         while (end - start > 0)
    18                 int temp = path[start % n];
    19                 path[start % n] = path[end % n];
    27 int is_path_shorter(
double **graph, 
int v1, 
int v2, 
int v3, 
int v4, 
double &total_dist)
    29         if ((graph[v1][v3] + graph[v2][v4]) < (graph[v1][v2] + graph[v3][v4]))
    31                 total_dist -= (graph[v1][v2] + graph[v3][v4] - graph[v1][v3]
    40 double twoOpt(
double **graph, vector<int> &path, 
double &pathLength, 
int n)
    44         double old_distance = pathLength;
    49         for (
int i = 0; i < n; i++)
    56                 for (
int j = i + 2; (j + 1) % n != i; j++)
    65                                         path[v2], pathLength))
    71                                 if (pathLength - old_distance < 5 && counter == term_cond)
    75                                 if (pathLength - old_distance > term_cond )
    78                                 old_distance = pathLength;
    90         for (
int i = 0; i < size-1; i++)
    92                 length += graph[path[i]][path[i+1]];
    94         length += graph[path[size-1]] [path[0]]; 
 double twoOpt(double **graph, vector< int > &path, double &pathLength, int n)
double get_path_length(double **graph, vector< int > &path, int size)
int is_path_shorter(double **graph, int v1, int v2, int v3, int v4, double &total_dist)
void reverse(vector< int > &path, int start, int end, int n)