***SIGSEGV error is coming in my c++ submission code?
如何解决我的代码中的错误?
在我的代码中,我使用bfs来计数目标节点的级别,然后使用dfs移至给定级别的该destinaton节点,我已经通过bfs进行了计数?
这是我的问题的链接
#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);
}