2017-12-14 20 views
0

私は無向グラフ(グラフが切断されている可能性があります)を持っています。 特定のノードの到達不能ノードの数を見つける必要があります。グラフ - 深さの最初の検索を使用して、無向グラフの到達不能ノードを見つける

#include<bits/stdc++.h> 
using namespace std; 
vector<int> graph[1000]; 
bool visited[1000]; 
int count=0; 

void dfs(int s) 
{ 
    count=count+1; 
    visited[s]=true; 
    for(int i=0;i<graph[s].size();i++) 
    if(visited[graph[s][i]]==false) 
     dfs(i); 
} 

int main() 
{ 
    int n,m; 
    cin>>n>>m; 
    int i; 
    for(i=0;i<m;i++) 
    { 
    int x,y; 
    cin>>x>>y; 
    graph[x].push_back(y); 
    graph[y].push_back(x); 
    } 
    int k; 
    cin>>k; 
    dfs(k); 

    cout<<n-count; 
} 

最初にグラフにはn個のノードがあります。 DFS処理の後、特定のノードkについて、dfs(k)は、kに接続されたノードの数を見つける。 到達できないノードはn-countで計算できます。

しかし、このコードでは、「カウント」への参照がのというエラーが表示されます。 問題は何ですか?私はDFSの再帰的な方法で間違いを犯しましたか? C++ライブラリで

+1

あなたが名前空間を汚染してはならない理由です。 'using namespace std;'が原因です。 [なぜ "namespace stdを使用する"が悪い習慣とみなされるのですか?](https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – Yashas

答えて

2

count関数テンプレートがあります - (#include <bits/stdc++.h>ディレクティブにより含まれていた)algorithmヘッダーで、あなたはdfsmain機能にcount::を追加することで、あなたの問題を解決することができます。

::count= ::count+1; 

cout<<n-::count; 
関連する問題