为什么以下代码求图的层次问题中运行错误
```c++
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int N=1e5+10,M=2*N;
int h[N],e[M],ne[M],n,m,idex,d[M],q[N],visit[N];//用队列来模拟数组
void add(int a,int b){
e[idex]=b;
ne[idex]=h[a];
h[a]=idex;
idex++;
}
void bfs(){
memset(d,0,sizeof(d));
int cur,next;
queue<int>que;
cur=1;
d[cur]=0;
visit[cur]=1;
que.push(cur);
while(!que.empty()){
cur=que.front();
que.pop();
for(int i=h[cur];i!=-1;i=ne[i]){
int j=e[i];
if(visit[j]==0){
d[j]=d[cur]+1;
que.push(j);
}
}
}
}
int main(){
cin>>n>>m;
memset(h,-1,sizeof(h));
for(int i=0;i<m;i++){
int a,b;
cin>>a>>b;
add(a,b);
}
bfs();
cout<<d[n]<<endl;
return 0;
}
```