如何解决此问题中的错误信号?

时间:2019-11-11 17:45:10

标签: segmentation-fault runtime-error

***SIGSEGV error is coming in my c++ submission code?

如何解决我的代码中的错误?


在我的代码中,我使用bfs来计数目标节点的级别,然后使用dfs移至给定级别的该destinaton节点,我已经通过bfs进行了计数?


这是我的问题的链接

https://www.hackerearth.com/practice/algorithms/graphs/breadth-first-search/practice-problems/algorithm/traffic-light-2-ee27ba45/




     #include<bits/stdc++.h>
       #define ll long long
       #define loop(i,n) for(int i=0;i<n;i++)
       #define fors(i,n) for(int i=1;i<=n;i++)
       using namespace std;
       vector <int> adj[1002];
       bool visited[1002];
       int level[1002];
       int arr[1002];
       stack <int> st;

这是bfs函数来计算级别


void bfs(int start,int end)
{
  visited[start]=true;
  queue <int> q;
  q.push(start);
  while(!q.empty())
  {
      int v=q.front();
      q.pop();

      loop(i,adj[v].size())
      {
          if(!visited[adj[v][i]])
          {  level[adj[v][i]]=level[v]+1;
              q.push(adj[v][i]);
              visited[adj[v][i]]=true;
          }
      }
  }
}


这是用于移动目标节点的dfs函数


    void dfs(int start,int end,int l,int lv)
    {   lv++;
       visited[start]=true;
       st.push(start);

      if(start==end&&lv==l)
      {
          int to=st.size()-1;int k=st.size();
          while(!st.empty())
          {
              arr[to--]=st.top();
              st.pop();
          }
          loop(i,k)
          cout<<arr[i]<<" ";
          return;
      }

           loop(i,adj[start].size())
           {
              if(!visited[adj[start][i]]&&level[start]!=level[adj[start][i]])
              {
                 dfs(adj[start][i],end,l,lv);
              }

           }
           int e=st.top();
           st.pop();
           visited[e]=false;
    }

    int main()
    {
      int n,m,t,c;
      cin>>n>>m>>t>>c;
      loop(i,1002)
      {
          visited[i]=false;
          level[i]=0;
      }
      loop(i,m)
      {
          int a,b;
          cin>>a>>b;
          adj[a].push_back(b);
          adj[b].push_back(a);
      }
      fors(i,n)
      {
          sort(adj[i].begin(),adj[i].end());
      }
      int x,y;
      cin>>x>>y;
      level[x]=1;
      bfs(x,y);
      int l=level[y];
      cout<<l<<endl;
      loop(i,1002)
      {
          visited[i]=false;
      }
      dfs(x,y,l,0);
    }






0 个答案:

没有答案