Problem polega na tym, że jest to część mojego programu, który oddaje na zaliczenie, a prowadzący zwrócił mi go i powiedział, że brakuje jakiegoś warunku w miejscu gdzie zaznaczyłem strzałkami. <<<<<<---------TUTAJ !!!!!!!!!
Aby ułatwić dodam, że pierwsza część programu to alg. Dijkstry sprawdzający spójnosc grafu, a potem zaczyna sie alg. fleuryego. Nie wiem o co mu chodzi, a program muszę jak najszybciej mu oddać :/ Może ktoś wie?
Coś mówił, że może być sytuacja, że jak usunę parę krawędzi, to zostanie wierzchołek nie mający żadnej krawędzi przy sobie, a Dijkstra będzie wykazywała spojność. Więc chyba powinienem dać warunek usuwaniu wierzchołka, ale własne nie wiem ?

int MacierzGrafu::alg_Dijkstry(int Macierz[][Max], int pierwszy, bool odwiedzony[])
{
     pom2=0;
     
     int u;

     for(i = 0; i<Max;i++)
     {
        usuniety[i] = false;
       
        Waga[i] = 100000;
        Sciezka[i] = 0;
     }
     
     Waga[pierwszy] = 0; //wybor pierwszego wierzcholka.
     
     for(i=0; i<wierzcholek; i++)
     {
        u = -1;
        
        for( j=0; j<wierzcholek; j++ )
           if( !usuniety[j] && ( u == -1 || Waga[j]<Waga[u] ))  //szukam wierzcholka o najmniejszej wadze
              u = j;
           
           usuniety[u] = true; //przenosze do zbioru wierzcholkow usunietych


           for( k=0; k<wierzcholek; k++ )
             
              if( Macierz[u][k] > 0 )
             
                 if( !usuniety[k] && ( Waga[k] > Waga[u] + Macierz[u][k] ))
                 {
                    Waga[k] = Waga[u] + Macierz[u][k];
                    Sciezka[k] = u;
                 }
     }                                                                                                                       
     for(i=0; i<wierzcholek; i++)                                <<<<<<---------TUTAJ  !!!!!!!!!
        if( Waga[i] >= 100000 && !odwiedzony[i] )         <<<<<<---------TUTAJ !!!!!!!!!!
                    
            
          return 0;

return 1;
}

////////////////////////////////////////////////////////////////////////////////



double MacierzGrafu::alg_Eulera()
{    
    int wyjscie;
    int x;

    kolejka.clear();   
    
    
     
    // tworzymy kopię grafu.          
    for(i=0; i<wierzcholek; i++)
       for(j=0; j<wierzcholek; j++)
          KopiaGrafu[i][j] = Graf[i][j]; 
    
    x = 0; //gdy nie ma wierzcholka o nieparzystym stopniu to
          // przyjmujemy wierzcholek startowy jako wierzcholek 0.
                  
    for(i=0; i<wierzcholek; i++)
    {
       licznik = 0;
       usuniety[i] = false; 
       
       for( j=0; j<wierzcholek; j++ )
          if( Graf[i][j] > 0)
            licznik++;
       
         
          if(licznik % 2)   // jeżeli wierzcholek jest nieparzystego stopnia
          {
             x = i;
             break;
          }
    }
    
    kolejka.push_back(x);  // wpisujemy do listy wierzcholek x
    
    
    if(alg_Dijkstry(KopiaGrafu,x,usuniety))  // sprawdzamy czy graf poczatkowy jest spojny
    {
       while(true)
       {
          wyjscie = 0;
          licznik = 0;
          
          for(j=0; j<wierzcholek; j++)
            if(KopiaGrafu[x][j] > 0)
              licznik++;
      
          if(licznik > 1) // jeżeli pozostała więcej niż jedna krawędz      
          {
             for(m=1; m<wierzcholek; m++)
             {
                if(!wyjscie && KopiaGrafu[x][m] > 0)
                {
                   pom1 = KopiaGrafu[x][m]; // kopiujemy wartość wagi
                   KopiaGrafu[x][m] = KopiaGrafu[m][x] = 0; // usuwamy krawedz   
                   
                   if(alg_Dijkstry(KopiaGrafu,x,usuniety)) // spr. czy po usunięciu krawędzi graf dalej jest spojny
                   {                   
                      usuniety[x] = true;  // zapisujemy krawędź jako usunieta
                      kolejka.push_back(m); // wpisujemy na koniec listy wierzcholek m   
                      x = m;
                      wyjscie = 1;
                   } 
         
                   else // jeżeli graf nie jest spójny to:             
                     KopiaGrafu[x][m] = KopiaGrafu[m][x] = pom1; // nie usuwa krawedzi
                }
             }                  
          }
          
          
          else if(licznik == 1)// jeżeli pozostała jedna krawędz
          {
             for(m=0; m<wierzcholek; m++)
               if(KopiaGrafu[x][m] > 0)
               {
                  KopiaGrafu[x][m] = 0;
                  KopiaGrafu[m][x] = 0;
                  
                  usuniety[x] = true; // zapisujemy krawędź jako usnieta
                  kolejka.push_back(m); // wpisujemy na koniec listy wierzcholek m.
                  x = m;
               } 
          }
    
          // konczymy przeszukiwanie. 
          else if(licznik == 0) break;                                           
    }  
  }         
  
  else
    cout << "Wygenerowany graf nie jest spójny!" << endl;
    

    

}

// popraw temat [mf]