您的位置:首页 > 其它

332. Reconstruct Itinerary

2016-02-21 15:49 495 查看
class Solution {
public:
vector<string> findItinerary(vector<pair<string, string>> tickets) {
map<string, vector<string>> edge;
for (int i = 0; i < tickets.size(); ++i) {
string from = tickets[i].first;
string to = tickets[i].second;
edge[from].push_back(to);
}
for (map<string, vector<string>>::iterator itr = edge.begin(); itr != edge.end(); ++itr) {
sort(itr->second.begin(), itr->second.end(), greater<string>());
}
vector<string> path;
string pos = "JFK";
findEuler(edge, pos, path);
reverse(path.begin(), path.end());
return path;
}
void findEuler(map<string, vector<string>> &edge, string pos, vector<string> &path) {
while (!edge[pos].empty()) {
string nextPos = edge[pos].back();
edge[pos].pop_back();
findEuler(edge, nextPos, path);
}
path.push_back(pos);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: