class Solution {
public:
vector<string> findItinerary(vector<pair<string, string>> ticket) {
vector<string> itinerary;
if(ticket.size()==0){
return itinerary;
}
map<string,multiset<string>> map;
for(auto val:ticket){
map[val.first].insert(val.second);
}
stack<string> st;
st.push("JFK");
while(!st.empty())
{
string s=st.top();
if(map.find(s)!=map.end()&&map[s].size()>0)
{
st.push(*map[s].begin());
map[s].erase(map[s].begin());
}
else {
itinerary.insert(itinerary.begin(),s);
st.pop();
}
}
return itinerary;
}
};
public:
vector<string> findItinerary(vector<pair<string, string>> ticket) {
vector<string> itinerary;
if(ticket.size()==0){
return itinerary;
}
map<string,multiset<string>> map;
for(auto val:ticket){
map[val.first].insert(val.second);
}
stack<string> st;
st.push("JFK");
while(!st.empty())
{
string s=st.top();
if(map.find(s)!=map.end()&&map[s].size()>0)
{
st.push(*map[s].begin());
map[s].erase(map[s].begin());
}
else {
itinerary.insert(itinerary.begin(),s);
st.pop();
}
}
return itinerary;
}
};