提示
#include<bits/stdc++.h> using namespace std; int visit[1010]; int p[1010][1010]; int k,m,u,v,n; struct node { int data; int step; }t1,t2; void bfs(int k) { queue<node>q; t1.data=k; t1.step=0; q.push(t1); visit[k]=1; while(!q.empty()) { t2=q.front(); q.pop(); if(t2.data==1) { cout<<t2.step<<endl; return ; } for(int i=1;i<=n;i++) { if(!visit[i]&&p[t2.data][i]) { t1.data=i; t1.step=t2.step+1; q.push(t1); visit[i]=1; } } } cout<<"NO"<<endl; } int main() { while(cin>>n>>m) { memset(visit,0,sizeof(visit)); memset(p,0,sizeof(p)); for(int i=0;i<m;i++) { cin>>u>>v; p[u][v]=1; } bfs(n); } return 0; }
