
void tsp_ompcol4()
{
  int i,j,k;
#pragma omp parallel for collapse(4) schedule(runtime)
 for (i=1; i < nbCities; i++)
   for(j=1; j < nbCities; j++)
     for(k=1; k < nbCities; k++)
        for(int l=1; l < nbCities; l++)
	  if(i != j && i != k && j != k && i != l && j != l && k != l)
	    {
	      path_t path;
	      path[0] = 0;
	      path[1] = i;
	      path[2] = j;
	      path[3] = k;
	      path[4] = l;
	      int dist = distance[0][i] + distance[i][j] + distance[j][k] + distance[k][l];
	      tsp_seq (5, dist, path,  1 | (1<<i) | (1<<j) | (1<<k) | (1<<l)) ;
         }
}

void tsp_ompcol3()
{
  int i,j,k;
#pragma omp parallel for collapse(3) schedule(runtime)
 for (i=1; i < nbCities; i++)
   for(j=1; j < nbCities; j++)
     for(k=1; k < nbCities; k++)
       if(i != j && i != k && j != k)
         {
          path_t path;
          path[0] = 0;
          path[1] = i;
          path[2] = j;
          path[3] = k;
          int dist = distance[0][i] + distance[i][j] + distance[j][k];
          tsp_seq (4, dist, path,  1 | (1<<i) | (1<<j) | (1<<k)) ;
         }
}

void tsp_ompcol2()
{
  int i,j;
#pragma omp parallel for collapse(2) schedule(runtime)
 for (i=1; i < nbCities; i++)
   for(j=1; j < nbCities; j++)
     if(i != j)
         {
          path_t path;
          path[0] = 0;
          path[1] = i;
          path[2] = j;
          int dist = distance[0][i] + distance[i][j];
          tsp_seq (3, dist, path,  1 | (1<<i) | (1<<j) );
         }
}
