Macierz sąsiedztwa - std::bad_alloc

0

.

0

Policz ile pamięci chcesz zarezerwować przy 10 tyś wierzchołków.

0

.

0

Nie, potrzebujesz tylko 10000100004 = 400MB więc nie wydaje mi się żeby to było aż tak dużo.

0

.

0

Przydziel to: bool Odwiedzone[l_wierzcholkow]; dynamicznie a problem powinien zniknąć.
Kod skopany na maksa.

0

.

0
  1. Nie używaj wersji przyrostkowej inkrementacji/dekrementacji jeżeli nie masz takiej potrzeby.
  2. Po kiego przydzielasz pamięć "ręcznie" skoro istnieje vector<vector<bool> > tab(l_wierzcholkow,vector<bool>(l_wierzcholkow,false)); używasz: tab[y][x]=true; lub if(tab[y][x]).
  3. Zrób może jakąś klasę z tego np Graph.
  4. Nie używaj zmiennych globalnych, przekaż jako parametr przez referencje.
  5. Warunek przy losowaniu to jakiś WTF, napisz po ludzku: if((!tab[y][x]))&&(y!=x)) { tab[y][x]=tab[x][y]=true; ++i; }

1 użytkowników online, w tym zalogowanych: 0, gości: 1