ACM 算法总结 --- 排序 HDOJ HDU 2094 产生冠军 ACM 2094 IN HDU

题目地址:
        http://acm.hdu.edu.cn/showproblem.php?pid=2094
题目描述:

01 /*
02 一道很明显的数据结构题, 用拓扑排序解决.
03 当 输入 A 战胜 B 时, 让 B 指向 A, 表示B曾被打败过.
04 最后指向空的就表示没有人战胜过他, 如果这样的人仅
05 存在一个,那么明显,最后的冠军就是他了. 这里我用到了
06 C++ STL 的map set 用来实现 B->A 的映射关系.
07 */
08
09 //HDOJ HDU 2094 产生冠军 ACM 2094 IN HDU
10 #include <iostream>
11 #include <set>
12 #include <map>
13 #include <string>
14 using namespace std;
15
16 int main()
17 {
18     int n , i;
19     while(cin>>n , n)
20     {
21         string s1 ,s2;
22         int count = 0;
23         set<string> s;
24         map<string ,string > m;
25         for(i=0; i<n; ++i)
26         {
27             cin>>s1>>s2;
28             s.insert(s1);
29             s.insert(s2);
30             m[s2] = s1;
31         }
32         for(set<string>::iterator it = s.begin() ; it != s.end() ; it++)
33         {
34             if(!m[*it].length())
35                 count ++;
36         }
37         if(count == 1)
38             cout<<"Yes"<<endl;
39         else
40             cout<<"No"<<endl;
41     }
42     return 0;
43 }

posted @ 2010-09-02 08:59  BuildNewApp  阅读(303)  评论(0编辑  收藏  举报