Masz wycieki pamięci:
Szachownica* a = new Szachownica(n);
while (a == NULL || !a->czyCel()) {
a = BFS(szachownicaBFS);
}
Szachownica* b = new Szachownica(n);
while (b == NULL || !b->czyCel()) {
b = DFS(szachownicaDFS);
}
Nadpisujesz wskaźniki a i b gubiąc obiekty przydzielone na stercie. To samo w funkcji BFS - ściągasz obiekt (szachownica) ze stosu i go gubisz.
std::unique_ptr twoim przyjacielem ;)