1 #include <stdio.h>
2 #include <string.h>
3 int map[1000][1000];
4 int visit[1000];
5 int n;
6 int max;//利用max来标记是否达到隘口1,如达到则max=1;
7 void DFS(int t)
8 {
9 visit[t]=1;
10 int i;
11 for(i=n; i>=0; i--) //从n开始出发。
12 {
13 if(map[t][i]==1&&visit[i]==0)
14 {
15 if(i==1)
16 {
17 max=1; //若i=1,则表示能够到达。
18 return;
19 }
20 DFS(i);
21 }
22 }
23 }
24 int main()
25 {
26 int m;
27 while(~scanf("%d %d",&n,&m))
28 {
29 int i,a,b;
30 max=0;
31 memset(map,0,sizeof(map));
32 memset(visit,0,sizeof(visit));
33 for(i=0; i<m; i++)
34 {
35 scanf("%d %d",&a,&b);
36 map[a][b]=1;//此题路线是单向。
37 }
38 DFS(n);//因为天灾军团在n隘口,所以从n隘口出发。
39 if(max==1)printf("YES\n");
40 else printf("NO\n");
41 }
42 return 0;
43 }