hdu2094产生冠军

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

其实这题也不算是拓扑排序了 只需要判断最开始入度是否唯一就可以了 如果是0  肯定有环了 不是0 会有多个冠军也不对

View Code
 1 #include<iostream>
 2 #include<map>
 3 #include<string>
 4 #include<string.h>
 5 using namespace std;
 6 int de[1001];
 7 int main()
 8 {
 9     int i,j,k,g,n,fg;
10     string s1,s2;
11     while(cin>>n)
12     {
13         if(!n)
14             break;
15         memset(de,0,sizeof(de));
16         map  <string, int > f;
17         f.clear();
18         fg = 0;g = 0 ;
19         for(i = 1; i <= n ; i++)
20         {
21             cin>>s1>>s2;
22             if(!f[s1])
23             {
24                 g++;
25                 f[s1] = g;
26             }
27             if(!f[s2])
28                 f[s2] = ++g;
29             de[f[s2]]++;
30         }
31         for(i = 1; i <= g ; i++)
32         if(de[i]==0)
33         fg++;
34         if(fg!=1)
35             cout<<"No"<<endl;
36         else
37             cout<<"Yes"<<endl;
38     }
39     return 0;
40 }

 

posted @ 2012-07-24 16:59  _雨  阅读(196)  评论(0编辑  收藏  举报