void SA(double alfa,
        int SAmax,
        int tot_trip,
        double T,
        int *ftrip,
        struct trip *trip,
        struct trip *trip_star,
        struct trip *trip_linha,
        struct trip *trip_orig)
//------------------------------------------------------------------------------
{
int ftrip_linha;
int delta;
double x;

copia_trip(trip_star, trip, tot_trip);
int ftrip_star = *ftrip;

int IterT;

  while (T > 0.001){
     IterT = 0;
     while ( IterT < SAmax ){
        IterT = IterT + 1;

          copia_trip (trip_linha, trip, tot_trip);
          ftrip_linha = *ftrip;

          sorteia_viagem(3, 3, tot_trip, trip_linha, trip_orig);

          gera_trip("NSuica", tot_trip, 0, trip_linha);

          system("ArcGen2004");
          le_arquivo("NSuica.sol",&ftrip_linha);
          printf("\nFO Vizinho: %d\n", ftrip_linha);

          delta = ftrip_linha - (*ftrip);
          printf("\nDELTA: %d\n", delta);

            if (delta < 0){
              copia_trip(trip, trip_linha, tot_trip);
              *ftrip = ftrip_linha;
              if (ftrip_linha < ftrip_star){
                  copia_trip(trip_star, trip_linha, tot_trip);
                  ftrip_star = ftrip_linha;
                  }
            }
            else{
                 srand(time(NULL));
                 x = randomico (0, 1);                                
                 if ( x < exp(-delta/T)){
                   copia_trip (trip, trip_linha, tot_trip);
                   *ftrip = ftrip_linha;
                 }
              //getchar();
            }
        }
        T = alfa* T;
        printf("\nTemperatura: %2.4f\n", T);
        //getchar();
  }
   copia_trip(trip, trip_star, tot_trip);
   *ftrip = ftrip_star;

     printf("\nTRIP_STAR:\n");
     for (int i = 1; i <= tot_trip; i++){
        printf("TRIP%d %d %d %d %d %6.2f %d %d\n", i, trip[i].st,
                                                      trip[i].sl,
                                                      trip[i].et,
                                                      trip[i].el,
                                                      trip[i].rt,
                                                      trip[i].dm,
                                                      trip[i].tt);
   }
     printf ("\nMelhor FO: %d\n", *ftrip);
     getchar();
}
