#include #include #include #include using namespace std; map<string,vector<string>> m; void dfs(string s, vector<string> &answer) { while(!m[s].empty()) { string next = m[s].front(); m[s].erase(m[s].begin()); dfs(next, answer); } answer.push_back(s); } vector<string> solution(vector<vector<string>> tickets) { vector<string> answer; for(auto i : tickets) m[i[0]].push_back(i[1]);

for(auto i = m.begin(); i != m.end(); i++) sort(i->second.begin(), i->second.end()); dfs("ICN",answer); reverse(answer.begin(),answer.end()); return answer; }