簡體   English   中英

是什么導致了這里的分段錯誤?

[英]What is causing the segmentation fault in here?

這只是我通過遞歸嘗試過的無向圖的 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;
}

您對dfs中的gvis具有超出范圍的數組訪問權限。 arrays 的大小都是n但您可以訪問g[n]vis[n]

也許您打算調用dfs(g,0,vis); ???

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM