Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Distanza nodi di un grafo

    Ciao a tutti ragazzi, scusate se pecco in qualcosa in questo messaggio ma è il primo che scrivo su questo forum. Detto questo, il problema che devo risolvere è il seguente: "Dato un grafo orientato G di n nodi ed m lati, e due nodi s e u di G, determinare il numero di nodi di G raggiungibili da s che si trovano alla stessa distanza da s e da u". Ora, dopo la fase di creazione, sfrutto l'algoritmo di visita in ampiezza partendo da S e da U, i miei nodi prescelti, e mi ricavo quali sono i nodi raggiungibili dall'uno e dall'altro nodo. A questo punto non mi viene in mente nessun metodo con cui io possa fare il confronto tra le distanze trovate e incrementare di conseguenza un apposito contatore. Qualcuno sa darmi qualche dritta? Grazie anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Allora, intanto ti esorto a dare una letta al regolamento perchè manca il linguaggio con cui vorresti fare ciò..

    Secondo, posta un po' di codice sul come come hai fatto ciò che dici e dove è il tuo problema così da aiutarti meglio..

  3. #3
    Non trovo l'opzione per incollare il codice usando l'indentazione, cioè meglio, riesco a incollarlo ma è tutto scomposto. Mi ricordate come devo fare per inserire del codice C++?

  4. #4
    Questa è la funzione che utilizzio per il calcolo delle distanze, ossia per ogni nodo raggiungibile da quello da me prescelto per la visita, tramite questa funzione, mi calcolo la relativa distanza.

    codice:
    int distanza (int x)         //Funzione per il calcolo della distanza 
    {
    nodo davanti, dietro;
    nodo w;
    int dist[MAX_V],dista, stop = x, conta=-1, c=x, count=0;             
    //dist[] è il vettore contenente la distanza dei nodi raggiungibili da s
                                
     davanti = dietro = NULL;
     visitato[x] = TRUE;
     addc(&davanti, &dietro, x);
     dist[x] = 0;
    
     while(davanti) { x = deletec(&davanti);
                      
                      if(stop != x) printf("\n\nNodo:%2d [ dist %d] ", x, dist[x]);   
    //Se stop (il nodo di partenza) è diverso da quello 
                      for(w = grafo[x]; w; w = w->succ)                              
    //in questione, allora ne scrivo la distanza che...
      	              if(!visitato[w->vertice]) { addc(&davanti, &dietro, w->vertice);  
                                                  visitato[w->vertice] = TRUE;          
                                                  dist[w->vertice] = dist[x] + 1;//incremento qui
                                                  dista = dist[x];
                                                  count+=1; 
                                                                    
                                                }                                                 
    }printf("\n\nIl numero dei nodi raggiungibili da %d e': %d", c, count ); 
    }

  5. #5
    Il problema sta nel fatto del calcolo del numero dei nodi che si trovano alla stessa distanza da entrambi i miei nodi di partenza. Consigli su come poter fare?

  6. #6
    Ciao, non c'è nessuno che passando da questo post, ha pensato ad un idea o a qualche suggerimento da darmi????Help!!!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.