2016-07-26 6 views
0

그래서이 알고리즘 메신저 사용하고, 나는 깊이있는 수준에 내가 BFS (Breadth-first search)를 사용하는 검색 수준을 어떻게 알 수 있습니까?

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); 
    } 
} 

내가 무엇을 할 수 BFS

사용하고 알고 싶어?

+0

그냥 여분의'depth' 매개 변수를 전달할을 넣어해야합니다. 'bfs'에 대한 초기 호출에서 0을 전달하십시오. 재귀 호출에서'depth + 1'을 전달하십시오. 그러므로 : void bfs (int n, int depth) {... bfs (n, depth + 1); ...}' –

답변

1

당신이 지금 얼마나 깊이 있는지 알고 싶다면 추가 배열 깊이을 고려해야합니다. depth 크기는 그래프의 정점 수와 같으며 BFS를 시작하는 정점에서부터 각 정점의 깊이를 포함합니다. 부모의 차일을 통과 할 때 당신은 깊이 [아동] = 깊이 [부모] + 1