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 }