造成分段错误的原因是什么?

时间:2020-07-26 11:48:00

标签: c++

这只是我尝试通过递归进行的无向图DFS的简单代码。递归确实在这里终止(我猜是吗?)。那么,是什么导致了分段错误?我使用了在线编译器,即jdoodle和辅导手册。(好吧,这很愚蠢,对不起)

#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;
}

1 个答案:

答案 0 :(得分:2)

您在g中的visdfs上具有超出范围的数组访问权限。两个数组的大小均为n,但您访问的是g[n]vis[n]

也许您想打dfs(g,0,vis); ??