[c++] BFS na liscie sąsiedztwa

0

mam problem z napisaniem algorytmu BFS, niby w necie jest tego dużo, ale wszystko jest na macierzy a ja potrzebuje mieć to na liście. Reprezentacja grafu wygląda tak:

class Graf
{
public:
    string etykieta;
    vector <Graf*> ListaEtykiet;
    Graf(string nazwa)
    {
      etykieta = nazwa;
    }
};


//no i tutaj siedzi mój cały graf
vector< Graf*> Wierzcholki;

algorytm DFS jakoś udało mi się napisać,

void dfs(vector<Graf*>&graf)
{
  for (int i = 0; i < graf.size(); i++) //zwykle czyszczenie tablicy bool'oskiej odwiedzonych wierzcholkow
     odw[i] = false;
  runDFS(0, graf);
}

void runBFS (int u,vector<Graf*>&graf)
{
 int poprzednik = u;
 int nast;
 odw[u]=true;
 cout<<graf[u]->etykieta<<endl;
 for(int i =0;i<graf[poprzednik]->ListaEtykiet.size();i++)
 {
  nast = szukaj(graf[u]->ListaEtykiet[i]->etykieta,graf);
  odw[nast] = true;
  if(odw[nast])
   runBFS(nast,graf[poprzednik]->ListaEtykiet);
 }//for i
}

ale BFS mi nie idzie
czy ktoś może poratować mnie jakimś pseudo kodem, albo jakimiś podopowiedziami?

0

Wchodzisz do wierzchołka początkowego. Przeglądasz w pętli listę jego sąsiadów (z owej listy) i wrzucasz je do kolejki. Dla każdego wierzchołka w kolejce odpalasz rekurencyjnie BFS, jeśli jeszcze nie oznaczyłeś go jako takiego do którego wchodziłes.

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