HDU3342-Legal or Not
http://acm.hdu.edu.cn/showproblem.php?pid=3342
#include<stdio.h> #include<string.h> int map[1000][1000]; int main(void) { int i,j,k,flag,n,m,x,y; while(scanf("%d%d",&n,&m)&&(n||m)) { memset(map,0,sizeof(map)); flag=0; for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); map[x][y]=1; } for(k=0;k<n;k++) for(j=0;j<n;j++) for(i=0;i<n;i++) if(map[j][k]==1&&map[k][i]==1) map[j][i]=1; for(i=0;i<n;i++) { for(j=i+1;j<n;j++) if(map[i][j]==1&&map[j][i]==1) { flag=1; break; } if(flag==1) break; } if(flag==0) printf("YES\n"); else printf("NO\n"); } return 0; }