14. Reconstruct Itinerary
Last updated
Last updated
class Solution {
private:
void dfs(unordered_map<string, vector<string>>& adj, vector<string>& ans, string s)
{
while(adj[s].size())
{
string v = adj[s][0];
adj[s].erase(adj[s].begin());
dfs(adj, ans, v);
}
ans.push_back(s);
}
public:
vector<string> findItinerary(vector<vector<string>>& tickets) {
unordered_map<string, vector<string>> adj;
for(auto it: tickets)
adj[it[0]].push_back(it[1]);
vector<string> ans;
for(auto &[_,it]: adj)
sort(it.begin(),it.end());
dfs(adj, ans, "JFK");
reverse(ans.begin(), ans.end());
return ans;
}
};