code:
#include<bits/stdc++.h>
using namespace std;
int n,l,i,z,p,q,u[200010],o;
bool k;
string t[200010];
queue<int>m;
void bfs(int y){
int j;
for(j=1;j<=o;j++)m.push(u[j]);
o=0;
k=false;
while(!m.empty()){
k=true;
for(j=1;j<=n;j++){
if(t[m.front()][j]=='1'){
if(j==1){
cout<<y;
exit(0);
}
u[++o]=j;
}
}
m.pop();
}
if(!k){
cout<<-1;
exit(0);
}
bfs(y+1);
}
int main(){
cin>>n>>l;
for(i=1;i<=n;i++){
for(z=1;z<=n;z++)m[i][z]='0';
}
for(i=1;i<=l;i++){
cin>>p>>q;
t[p][q]='1';
}
m.push(1);
bfs(1);
return 0;
}
这是萌新第一次写bfs,全RE求调