題目連結: https://zerojudge.tw/ShowProblem?problemid=a821
# 內容
MPM 是一個近年非常風行的即時戰略遊戲,吸引全世界眾多玩家投入。多塔公司為了推銷遊戲,舉辦了世界大賽角逐最強隊伍的頭銜。每支隊伍會不斷與隨機的對手競賽,可能會呵某些對手比賽多次,也可能一直都沒對決上。多塔公司希望將最強隊伍頭銜頒給 曾擊敗所有其他隊伍且從未被任何隊伍擊敗的隊伍。請撰寫程式找到那隻隊伍。
# 解題思路
將每一隊擊數的隊伍以 set 記錄,輸出擊數隊伍數為 n-1,且沒有被擊數的隊伍。
# 程式碼
#include <bits/stdc++.h> | |
using namespace std; | |
int main() { | |
int n, m; | |
while (scanf("%d %d", &n, &m) == 2) { | |
char s1[128], s2[128]; | |
map<string, set<string> > P; | |
map<string, int> Q; | |
for (int i = 0; i < m; i++) { | |
scanf("%s %s", s1, s2); | |
Q[s2] = 1; | |
P[s1].insert(s2); | |
} | |
for (auto &x : P) | |
if (x.second.size() == n-1 && Q[x.first] == 0) | |
printf("%s\n", x.first.c_str()); | |
} | |
return 0; | |
} |