使用深度优先搜索在无向图中查找无法到达的节点

时间:2017-12-14 12:46:31

标签: c++ graph depth-first-search

我有一个无向图(可能是断开连接的图)。 我需要找到给定节点的无法访问节点数。

#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递归方法中犯了什么错误吗?

1 个答案:

答案 0 :(得分:2)

在C ++库中有count函数模板 - 在algorithm标题中(#include <bits/stdc++.h>指令包含),您可以在::之前添加count来解决您的问题{1}}和dfs函数中的{1}}。

main

  ::count= ::count+1;