AcWing 693. 行程排序
原题链接
简单
作者:
wcyyyooo
,
2022-06-27 11:57:21
,
所有人可见
,
阅读 180
C++ 代码
#include <iostream>
#include <unordered_map>
#include <map>
using namespace std;
int t, n;
int main(){
cin >> t;
for(int c = 1; c <= t; c++){
cin >> n;
unordered_map<string, int> ms; //记录每个结点走过几次
map<string, string> m; //记录机票
for(int i = 0; i < n; i++){
string start;
string end;
cin >> start >> end;
ms[start]++, ms[end]++;
m[start] = end;
}
string start;
auto iter = m.begin();
while(iter != m.end()){ //遍历哈希表,找到是起点且只走过一次的地点
if(ms[iter->first] == 1) start = iter->first;
iter++;
}
printf("Case #%d: ", c);
for(int i = 0; i < n; i++){
cout << start << "-" << m[start] << " ";
start = m[start];
}
}
return 0;
}