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?