Guest User

Untitled

a guest
Aug 16th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.23 KB | None | 0 0
  1.     void rota_mais_proxima (float r1[MAX_CIDADES][2], float r2[MAX_CIDADES][2], int n) {
  2.         float mapa[n][n];
  3.         int lista[n*n], flag;
  4.         int choice = -1;
  5.         float pai[n][n];
  6.         int i, j, a;
  7.         float dist[n], distMin = -1;
  8.  
  9.         for (i = 0; i < n; i++)
  10.             for (j = 1; j < n; j++)
  11.                 mapa[i][j] = mapa[j][i] = sqrt(pow(r1[i][0]-r1[j][0],2) + pow(r1[i][1]-r1[j][1],2));
  12.  
  13.  
  14.         for (a = 1; a < n; a++) {
  15.             for (i = 0; i < n; i++) {
  16.                 dist[i] = -1;
  17.                 pai[a][i] = -1;
  18.             }
  19.  
  20.             dist[0] = [0];
  21.             flag = 0;
  22.             lista[flag++] = 0;
  23.             while (flag != 0) {
  24.                 flag--;
  25.                 for (i = 0; i < n; i++)
  26.                     if (dist[i] = -1 || dist[i] > dist[lista[flag]]+mapa[i][lista[flag]]) {
  27.                         dist[i] = dist[lista[flag]][i] + dist[lista[flag]];
  28.                         pai[a][i] = lista[flag];
  29.                         lista[flag++] = i;
  30.                         }
  31.             }
  32.             if (distMin == -1 || dist[a] < distMin) {
  33.                 distMin = dist[a];
  34.                 choice = a;
  35.             }
  36.         }
  37.  
  38.         return distMin;
  39. }
Add Comment
Please, Sign In to add comment