产生冠军(toposort)

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 }
View Code

 

posted @ 2014-02-27 14:52  N_ll  阅读(257)  评论(0编辑  收藏  举报