//one#include<bits/stdc++.h>usingnamespace std;int mp[25][25];//建立圖int in[25];//記錄入度int q[111];//用數組模擬隊列來做的intmain(){int n, m;while(cin >> n >> m){memset(mp,0,sizeof(mp));//清空圖memset(in,0,sizeof(in));//清空入度int head =0, tail =0;//清空隊列while(m--)//建圖{int u, v;cin >> u >> v;mp[u][v]=1;in[v]++;//b對應的入度+1}for(int i =1; i <= n; i++)//找到入度等于0的點{if(!in[i])q[tail++]= i;//入度為0的點入隊}int cnt =0;//計數while(head < tail)//隊列不為空{int top = q[head++];//cnt++;in[top]--;//輸出點的入度由0變為-1for(int i =1; i <= n; i++)//刪除top的后繼{if(mp[top][i]){in[i]--;if(!in[i])//判斷入地是否為零q[tail++]= i;//入度為零的入隊列}}}if(cnt == n)cout <<"YES"<< endl;elsecout <<"NO"<< endl;}return0;}//two STL隊列#include<bits/stdc++.h>usingnamespace std;int mp[11][11];int in[11];voidToList(int n){queue<int>q;for(int i =1; i <= n; i++){if(!in[i])q.push(i);}int cnt =0;while(!q.empty()){int top = q.front();q.pop();cnt++;for(int i =1; i <= n; i++){if(mp[top][i]){in[i]--;if(!in[i])q.push(i);}}}if(cnt == n)cout <<"YES"<< endl;elsecout <<"NO"<< endl;}intmain(){int n, m;while(cin >> n >> m){memset(mp,0,sizeof(mp));memset(in,0,sizeof(in));while(m--){int u, v;cin >> u >> v;mp[u][v]=1;in[v]++;}ToList(n);}return0;}