#include #include #include #include #include using namespace std; typedef struct llink { int data; struct llink* next; }link; typedef struct node { int data; link* next; }node; node n[110]; void fr(link *u) { if(u==NULL) return; free(u->next); free(u); } queue q; int main() { int n1,m; int i,cnt; while(scanf("%d%d",&n1,&m)!=EOF) { cnt=0; for(i=1;i<=n1;i++) { n[i].data=0; fr(n[i].next);// 这样会tle 只能手动泄露内存 n[i].next=NULL; } while(!q.empty()) q.pop(); int t1,t2; for(i=1;i<=m;i++) { scanf("%d%d",&t1,&t2); n[t1].data++; link* v; v=(link*)malloc(sizeof(link)); v->data=t1; v->next=n[t2].next; n[t2].next=v; } for(i=1;i<=n1;i++) if(n[i].data==0) { cnt++; q.push(i); } while(!q.empty()) { int w=q.front(); q.pop(); link *u=n[w].next; while(u!=NULL) { n[u->data].data--; if(n[u->data].data==0) { cnt++; q.push(u->data); } u=u->next; } } if(cnt==n1) printf("YES\n"); else printf("NO\n"); } return 0; }