1 #include<cstdio>
2 #include<iostream>
3 #include<algorithm>
4 #include<cstring>
5 #include<cmath>
6 #include<queue>
7 #include<stack>
8 #include<cstdlib>
9 #include<vector>
10 using namespace std;
11
12 int n,m;
13 int in[101];
14 vector<int>ve[101];
15 queue<int>Q;
16
17 void init()
18 {
19 memset(in,0,sizeof(in));
20 for(int i=0;i<n;i++)
21 {
22 ve[i].clear();
23 }
24 }
25
26 int main()
27 {
28 while(~scanf("%d%d",&n,&m))
29 {
30 if(!n&&!m)break;
31 init();
32 for(int i=0;i<m;i++)
33 {
34 int u,v;
35 scanf("%d%d",&u,&v);
36 ve[u].push_back(v);
37 in[v]++;
38 }
39 for(int i=0;i<n;i++)
40 {
41 if(in[i]==0)
42 Q.push(i);
43 }
44 int num=0;
45 int add[101];
46 while(!Q.empty())
47 {
48 int t=Q.front();
49 Q.pop();
50 add[num++]=t;
51 while(!ve[t].empty())
52 {
53 if(--in[ve[t].back()]==0)
54 {
55 Q.push(ve[t].back());
56 }
57 ve[t].pop_back();
58 }
59 }
60 if(num==n)printf("YES\n");
61 else
62 printf("NO\n");
63 }
64 return 0;
65 }