http://acm.hdu.edu.cn/showproblem.php?pid=2094

1 #include <stdio.h> 2 #include <iostream> 3 #include <string.h> 4 using namespace std; 5 const int N=1010; 6 int num = 0,in[N]; 7 string name[N]; 8 int get_nameid(string s) 9 { 10 int i; 11 for (i = 0; i < num; i++) 12 if(name[i]==s) 13 break; 14 if(i >= num) 15 name[num++] = s; 16 return i; 17 } 18 int main() 19 { 20 int t; 21 string s1,s2; 22 while(cin>>t) 23 { 24 if(t==0) 25 break; 26 num = 0; 27 memset(in,0,sizeof(in)); 28 while(t--) 29 { 30 cin>>s1>>s2; 31 int p1 = get_nameid(s1); 32 int p2 = get_nameid(s2); 33 in[p2]++; 34 } 35 int cnt = 0; 36 for (int i = 0; i < num; i++) 37 { 38 if(in[i]==0) 39 cnt++; 40 if (cnt > 1) 41 break; 42 } 43 if (cnt==1) 44 puts("Yes"); 45 else 46 puts("No"); 47 } 48 return 0; 49 }