2016-07-26 7 views
0

Итак, это алгоритм им помощи, я хочу знать, на каком уровне глубины я использую BFSкак я знаю, на каком уровне поиска я использую BFS (поиск по ширине)?

void bfs(int n) 
{ 

    vis[n]=1; //marks n visited 
    d=0; 
    while(!adj[n].empty()) //adj is the array containing the adjacency lists 
    {if(!(vis[adj[n].front()])) 
    { 
     q.push(adj[n].front()); //q is the queue 
    } 
    adj[n].pop_front(); 
    } 
if(!q.empty()){ 
    n=q.front(); 
    cout<<n<< "->"; 
    q.pop(); 
    bfs(n); 
    } 
} 

что я могу сделать?

+0

Просто пройти по дополнительной 'depth' параметра. При первом вызове 'bfs', перейдите 0. В рекурсивном вызове перейдите' depth + 1'. Таким образом: 'void bfs (int n, int depth) {... bfs (n, depth + 1); ...} ' –

ответ

1

Для того, чтобы узнать, какую глубину вы сейчас находитесь, следует добавить в рассмотрение дополнительный массив глубина. глубина размер равен числу вершин в графе и содержит глубины каждой вершины, считая от вершины, где вы начинаете свою BFS. При прохождении через Чайлдс из родителей, вы должны поставить глубины [ребенок] = глубины [родитель] + 1