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;
}
posted @ 2012-08-30 20:53  Yogurt Shen  阅读(128)  评论(0编辑  收藏  举报