Http://acm.hdu.edu.cn/showproblem.php? PID = 1, 2094
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 int n; 5 int map[2001][2001],d[2001],v[2001]; 6 char name[2001][101]; 7 int tt; 8 int findx(char *s) 9 {10 int i;11 for(i=0;i<tt;i++)12 if(strcmp(name[i],s)==0)13 return i;14 if(i>=tt)15 {16 strcpy(name[tt],s);17 tt++;18 }19 return tt-1;20 }21 int main()22 {23 char a[100],b[100];24 int x,y,j;25 int flag;26 while(scanf("%d",&n)!=EOF&&n!=0)27 {28 tt=0;29 memset(v,0,sizeof(v));30 memset(d,0,sizeof(d));31 memset(map,0,sizeof(map));32 for(int i=0;i<n;i++)33 {34 scanf("%s%s",a,b);35 x=findx(a);36 y=findx(b);37 38 if(!map[x][y])39 {40 map[x][y]=1;41 d[y]++;42 }43 }44 flag=0;45 for(j=0;j<tt;j++)46 {47 if(v[j]==0&&d[j]==0)48 {49 v[j]=1;50 flag++;51 }52 }53 if(flag==1)54 printf("Yes\n");55 else56 printf("No\n");57 58 }59 return 0;60 }