2012-05-01 8 views
0

重み付き有向グラフで再帰深度最初の探索を実装しようとしていますが(ただし、出力が常にオフであるようですが)、ノードの追加訪問があります。作業: ラベルが訪れたverticiesに割り当てられた文字(A = 0、等が...)、特定されたインデックスの頂点が訪問されているかどうかを保持するベクトルです重み付き有向グラフ

void Dfs(int u, vector<bool> visited, vector <char> label, vector < vector <int> > adj) 
{ 
visited[u] = true; 
cout << label[u]; 

for (int i = 0; i < (signed)visited.size(); i++) 
    { 
    if (visited[i] != true && adj[u][i] != 0) 
      { 
      cout << "->"; 
      Dfs(i, visited, label, adj); 
      } 
    } 

} 

、およびadjは隣接行列です

私はグラフを持っており、正しい深さの最初の検索はA-> D-> B-> C-> Eです。私が得るのはA-> D-> B-> > C→E→C→B- > E。助けが必要な場合、この例では隣接行列は次のようになります。

| A B C D E 
--|--------------- 
A | - - - 6 - 
B | - - 8 3 2 
C | - 8 - 7 - 
D | 6 3 7 - - 
E | - 2 - - - 

答えて

3

関数のパラメータは値渡しです。あなたのvisited vectorは更新されていません。また、各再帰呼び出しがベクトルをコピーしないように、他のベクトルの参照渡しを使用してください。

+0

それは私が忘れてしまうような馬鹿げたものでした。ありがとう。 – Mongo

関連する問題