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 }

 

你可能感兴趣的:(HDU)