1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int map[100][100],visited[100],du[100],flag,n,m,i,j,k; 5 int main() 6 { 7 while(~scanf("%d %d",&n,&m)) 8 { 9 memset(map,0,sizeof(map)); 10 memset(visited,0,sizeof(visited)); 11 memset(du,0,sizeof(du)); 12 while(m--) 13 { 14 int a,b; 15 scanf("%d%d",&a,&b); 16 map[a][b]=1; 17 du[b]++; 18 } 19 for(i=1; i<=n; i++) 20 { 21 flag=0; 22 for(j=1; j<=n; j++) 23 { 24 if(visited[j]==0&&du[j]==0) 25 { 26 visited[j]=1; 27 for(k=1; k<=n; k++) 28 { 29 if(map[j][k]==1) 30 du[k]--; 31 } 32 flag=1; 33 break; 34 } 35 } 36 } 37 if(flag==1)printf("YES "); 38 else printf("NO "); 39 } 40 return 0; 41 }