提问者:小点点

是什么导致了这里的分割错误?


这只是一个简单的代码,用于一个无向图的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;
}

共1个答案

匿名用户

您可以对DFS中的GVIS进行超出界限的数组访问。 这两个数组的大小都是n,但您可以访问g[n]vis[n]

也许您打算调用dfs(g,0,vis);???