Kody źródłowe/Przeszukiwanie w głąb
C++
edytujvoid DFS(vector< vector<int> > &graf,int wierzcholek,vector<bool> &uzyto)
{
vector<int>::iterator iter; //iterator po sąsiadach wierzchołka
uzyto[wierzcholek] = true; //kolorujemy odwiedzony wierzchołek
//na tym węźle jesteśmy
cout <<wierzcholek<<"\n";
//przejście po sąsiadach wierzchołka
for (iter=graf[wierzcholek].begin(); iter!=graf[wierzcholek].end(); iter++)
{
//jeżeli wierzchołek nie odwiedzony, to wywołujemy DFS rekurencyjnie
if (uzyto[*iter] == false)
DFS(graf,*iter,uzyto);
}
}
void DFS(vector< vector<int> > &graf, //wektor wektorów, w którym zapisujemy sąsiadów wierzchołka
int wierzcholek=0 //wierzchołek, od którego startujemy
)
{
vector <bool> uzyto(graf.size(),false);
DFS(graf,wierzcholek,uzyto);
}