332. Reconstruct Itinerary
class Solution {
public:
vector<string> findItinerary(vector<pair<string, string>> tickets) {
for (auto t : tickets) {
target[t.first].insert(t.second);
}
visit("JFK");
return vector<string>(res.rbegin(), res.rend());
}
private:
map<string, multiset<string>> target;
vector<string> res;
void visit(string s) {
while (target[s].size()) {
string t = *target[s].begin();
target[s].erase(target[s].begin());
visit(t);
}
res.push_back(s);
}
};