使用深度第一次搜索的无向图中的图形调查无法实现的节点

Graph-Finding unreachable nodes in undirected graph using Depth First Search

本文关键字:图形 调查 节点 实现 深度 第一次 搜索      更新时间:2023-10-16

i有一个无方向的图(可能是断开的图)。我需要找到给定节点的无法到达的节点。

#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计数来计算无法达到的节点。

但这代码显示了一个错误,说引用"计数"是模棱两可的。问题是什么?我在DFS递归方法中犯了任何错误吗?

在C 库中,有count函数模板 - 在algorithm标题中(由#include <bits/stdc++.h> Directive包含),您可以通过在dfsmain功能中添加count之前通过添加::来解决问题。

  ::count= ::count+1;

  cout<<n-::count;