int *distancias( int A[][6], int c)
{
   int *d, j;
   int fila[6], ini, fim;

   d = mallocc( 6 * sizeof (int));
   for (j = 0; j < 6; j = j+1)  d[j] = 6;
   d[c] = 0;
   ini = 0; fim = 1; fila[0] = c;  

   while (ini != fim) { 
      int i, di;
      i = fila[ini];
      ini = ini + 1;
      di = d[i];
      for (j = 0; j < 6; j = j+1)
         if (A[i][j] == 1 && d[j] >= 6) {
            d[j] = di + 1;
            fila[fim] = j;
            fim = fim + 1;
         }
   }
   return d;
}

 

Escrito com "++",  o código ficaria ligeiramente mais eficiente.

 


URL of this site: www.ime.usp.br/~pf/algoritmos/