标签:iter code amp 拓扑排序 lin panel 之间 namespace map
AC代码1:
#include <iostream>
#include <string>
#include <set>
using namespace std;
int main() {
int n;
set<string> all, lose;
string Winner, loser;
while (cin >> n && n != 0) {
all.clear();
lose.clear();
while (n--) {
cin >> Winner >> loser;
//统计所有的赢家和输家
all.insert(Winner);
all.insert(loser);
lose.insert(loser);
}
// 只有一人没有输,才有冠军
if (all.size() - lose.size() == 1)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
return 0;
}
AC代码2:拓扑排序法
输入A 战胜 B时,就让B指向A。
最后,指向空的就说明没有人战胜过他。如果这样的人只存在一个,那他就是冠军了。
这里名字映射直接用C++的STL库map,和set。
#include <set>
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main(void)
{
int n, i, t;
string b, e;
set <string> s;
set <string>::iterator it;
map <string, string> m;
map <string, string>::iterator iter;
while (cin >> n, n)
{
s.clear();
m.clear();
for (i = 0; i < n; i++)
{
cin >> b >> e;
s.insert(b);
s.insert(e);
m[e] = b;
}
for (t = 0, it = s.begin(); it != s.end(); it++)
{
if (!m[*it].length())
t++;
}
puts(t == 1 ? "Yes" : "No");
}
return 0;
}
标签:iter code amp 拓扑排序 lin panel 之间 namespace map
原文地址:https://www.cnblogs.com/RioTian/p/12778849.html