ragazzi qualcuno mi sa dire cosa sbaglio in questo codice? mi dice che c'è la presenza di cicli ma nel grafo che ho messo non ce ne sono
codice:
void inizializza_bellman(int n,int d[],int p[]){
   int i;
   for(i=0; i<n; i++){
      d[i] = MAX_I;   
      p[i] = -1;
   }
}


int bellman_ford(Graph g,int d[],int pred[],int s){
   int i;
   inizializza_bellman(g->nodes_count,d,pred);
   d[s]=0;  // impostare la sorgente a 0
   List top;
   for(i=0;i<g->nodes_count;i++){
      top=g->adj[i];
      while(top!=NULL){
         if(d[top->target]>d[i]+top->peso){
            d[top->target]=d[i]+top->peso;
            pred[top->target]=i;
         }
         top=top->next;
      }
   }
   for(i=0;i<g->nodes_count;i++){
      top=g->adj[i];
      while(top!=NULL){
         if(d[top->target]>d[i]+top->peso)
            return 0;   
         top=top->next;
      }
   }
   return 1;
}