2016-07-26 70 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