Hej, mam następujący problem: program ma wyświetlać wszystkie ścieżki z punktu początkowego (1) do punktu końcowego (8) od najkrótszej do najdłuższej dla zadanego grafu:
user image
Nie wiem czemu w podanych wynikowych ścieżkach pokazują się wartości 64 i jeszcze większe a ścieżki nie są za bardzo posortowane. Będę wdzięczny za odpowiedź i ogólne uwagi. To co mam do tej pory wygląda tak:

#include <stdio.h>
#include <stdlib.h>
#define M 8
#define N 3
void test(int tabl[M][N],int wariant, char *buff);
int main(int argc, char *argv[])
{
  int graf[M][N] = {{1,-1,-1},{2,-1,-1},{3,4,7},{4,7,-1},{5,6,-1},{6,7,-1},{7,-1,-1},{0,0,0}};
  char *buff;
  sprintf(buff,"%d ",1);
  test(graf,0,buff);
  system("PAUSE");	
  return 0;
}
void test(int tabl[M][N],int wariant, char *buff){
      int j;
      
      for(j = 0;j<3;j++){
          int a = tabl[wariant][j];
          char h[250];
          
          if(a > 0){
               sprintf(h,strcat(buff,"%d "),a+1);
               test(tabl,a,h);
               
          }
          else if(a != -1){
               printf("%s \n",buff);    
          return;
          }
      }       
}