这只是一个简单的代码,用于一个无向图的DFS,我已经通过递归尝试过了。递归在这里确实终止了(我猜呢?)。那么,是什么导致了分割错误呢? 我使用了在线编译器,即jdoodle和tutorials point.(好吧,这是愚蠢的,对不起)
#include <bits/stdc++.h>
using namespace std;
void dfs(vector<int> g[],int n,bool vis[]){
vis[n]=true;
cout<<n<<" ";
for(auto x:g[n]){
if(!vis[x]) dfs(g,x,vis);
}
return;
}
int main() {
int t;
cin>>t;
while(t--){
int n,e,u,v,i;
cin>>n>>e;
bool vis[n]={false};
vector<int> g[n];
for(i=0;i<e;i++){
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(g,n,vis);
}
return 0;
}
您可以对DFS
中的G
和VIS
进行超出界限的数组访问。 这两个数组的大小都是n
,但您可以访问g[n]
和vis[n]
。
也许您打算调用dfs(g,0,vis);
???