1class Solution {2public:3vector<string> findItinerary(vector<vector<string>> &tickets) {4unordered_map<string, multiset<string>> myMap;5stack<string> myStack;6vector<string> ans;7for (int i = 0; i < tickets.size(); ++i) {8myMap[tickets[i][0]].insert(tickets[i][1]);9}10myStack.push({"JFK"});11while (!myStack.empty()) {12string top = myStack.top();13if (!myMap[top].empty()) {14myStack.push(*myMap[top].begin());15myMap[top].erase(myMap[top].begin());16} else {17ans.insert(ans.begin(), top);18myStack.pop();19}20}21return ans;22}23};24// Time : O(E)25// Space : O(V + E)