Problemi con Appetito Aracnide(tecla)

Etichette: #<Tag:0x00007f6e7f1bc160> #<Tag:0x00007f6e7f1bc098>
    #include <iostream>

    using namespace std;

    int lunghezza=0;
    const int LungRiga=2;
    int M;
    int Ragnatela[100][LungRiga];
    int percorso[10000];
    bool trovato=false;




    void VaiAvanti(int Nodo,int indice)
    {


    	for (int i=0;i<M;i++)
    	{
    		for (int j=0;j<LungRiga;j++)
    		{

    			if (Ragnatela[i][j]==Nodo)//serve per controllare tutti i vari collegamenti che ogni nodo ha con gli altri nodi
    			{	
    				if (trovato)
    				{
    					return;
    				}				
    				if (j==0)
    				{
    					int NuovoNodo=Ragnatela[i][j+1];
    					if (NuovoNodo==percorso[indice-2]&&indice>1)
    					{
    						return;
    					}
    					percorso[indice]=NuovoNodo;
    	
    					if(NuovoNodo==0&&indice%2!=0)
    					{
    						
    						trovato=true;
    						lunghezza=indice;
    						return;
    					}
    					
    					VaiAvanti(NuovoNodo,indice+1);
    				}
    				if (j==1)
    				{
    					int NuovoNodo=Ragnatela[i][j-1];
    					
    					if (NuovoNodo==percorso[indice-2]&&indice>1)
    					{
    						return;
    					}
    					
    					percorso[indice]=NuovoNodo;
    					if(NuovoNodo==0&&indice%2!=0)
    					{
    						trovato=true;
    						lunghezza=indice;
    						return;
    					}
    					VaiAvanti(NuovoNodo,indice+1);
    				
    				}
    			}
    		}
    	}

    	return;


    }


    int main(int argc, char** argv) {
    	int N;
    	cin>>N>>M;
    	for (int i=0;i<M;i++)
    	{
    		for (int j=0;j<LungRiga;j++)
    		{
    			cin>>Ragnatela[i][j];
    		}
    	}
    	percorso[0]=0;
    	
    	VaiAvanti(0,1);
    	cout<<lunghezza<<endl;
    	for (int i=0;i<=lunghezza;i++)
    	{
    		cout<<percorso[i]<<" ";
    	}
    	return 0;
    }

    l'algoritmo trova un percorso che esiste ed è anche lungo quanto quello dei test però non funziona perche esistono più percorsi della stessa lunghezza diversi ma giusti
    [/quote]

    [quote="ubaldo, post:1, topic:6637, full:true"]
    #include <iostream>

    using namespace std;

    int lunghezza=0;
    const int LungRiga=2;
    int M;
    int Ragnatela[100][LungRiga];
    int percorso[10000];
    bool trovato=false;




    void VaiAvanti(int Nodo,int indice)
    {


    	for (int i=0;i<M;i++)
    	{
    		for (int j=0;j<LungRiga;j++)
    		{

    			if (Ragnatela[i][j]==Nodo)//serve per controllare tutti i vari collegamenti che ogni nodo ha con gli altri nodi
    			{	
    				if (trovato)
    				{
    					return;
    				}				
    				if (j==0)
    				{
    					int NuovoNodo=Ragnatela[i][j+1];
    					if (NuovoNodo==percorso[indice-2]&&indice>1)
    					{
    						return;
    					}
    					percorso[indice]=NuovoNodo;
    	
    					if(NuovoNodo==0&&indice%2!=0)
    					{
    						
    						trovato=true;
    						lunghezza=indice;
    						return;
    					}
    					
    					VaiAvanti(NuovoNodo,indice+1);
    				}
    				if (j==1)
    				{
    					int NuovoNodo=Ragnatela[i][j-1];
    					
    					if (NuovoNodo==percorso[indice-2]&&indice>1)
    					{
    						return;
    					}
    					
    					percorso[indice]=NuovoNodo;
    					if(NuovoNodo==0&&indice%2!=0)
    					{
    						trovato=true;
    						lunghezza=indice;
    						return;
    					}
    					VaiAvanti(NuovoNodo,indice+1);
    				
    				}
    			}
    		}
    	}

    	return;


    }


    int main(int argc, char** argv) {
    	int N;
    	cin>>N>>M;
    	for (int i=0;i<M;i++)
    	{
    		for (int j=0;j<LungRiga;j++)
    		{
    			cin>>Ragnatela[i][j];
    		}
    	}
    	percorso[0]=0;
    	
    	VaiAvanti(0,1);
    	cout<<lunghezza<<endl;
    	for (int i=0;i<=lunghezza;i++)
    	{
    		cout<<percorso[i]<<" ";
    	}
    	return 0;
    }

l’algoritmo trova un percorso che esiste ed è anche lungo quanto quello dei test però non funziona perche esistono più percorsi della stessa lunghezza diversi ma giusti

Non ho capito :thinking:

Aiuta Tecla ad individuare una passeggiata funzionale al buon appetito!

Al presentarsi di più soluzioni puoi restituirne una qualsiasi.