मान लीजिए कि हमारे पास टिकटों की एक सूची है जो प्रस्थान और आगमन हवाई अड्डों के जोड़े द्वारा दर्शायी जाती है जैसे [से, से], हमें यात्रा कार्यक्रम को क्रम में खोजना होगा। सभी टिकट एक व्यक्ति के हैं जो चेन्नई से प्रस्थान करता है। तो, यात्रा कार्यक्रम चेन्नई से शुरू होना चाहिए।
तो अगर इनपुट [["मुंबई", "कोलकाता"], ["चेन्नई", "मुंबई"], ["दिल्ली", "बैंगलोर"], ["कोलकाता", "दिल्ली"]] जैसा है, तो आउटपुट ["चेन्नई", "मुंबई", "कोलकाता", "दिल्ली", "बैंगलोर"] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एरे रेट और ग्राफ नामक मानचित्र को परिभाषित करें।
-
विज़िट नामक एक विधि को परिभाषित करें। यह इनपुट के रूप में एयरपोर्ट का नाम लेगा
-
जबकि ग्राफ का आकार [एयरपोर्ट] 0 नहीं है
-
x :=ग्राफ का पहला तत्व [हवाई अड्डा]
-
ग्राफ़ [एयरपोर्ट]
. से पहला तत्व हटाएं -
कॉल विज़िट(x)
-
-
हवाई अड्डे को रिट में डालें
-
अब मुख्य विधि से निम्न कार्य करें -
-
मेरे लिए 0 से लेकर टिकर सरणी के आकार तक
-
यू:=टिकट [i, 0], वी:=टिकट [i, 1], ग्राफ में वी डालें[यू]
-
-
विज़िट ("चेन्नई") क्योंकि यह पहला हवाई अड्डा है
-
सूची को उलट दें और वापस लौटें
उदाहरण (C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector <string> ret; map < string, multiset <string> > graph; vector<string> findItinerary(vector<vector<string>>& tickets) { for(int i = 0; i < tickets.size(); i++){ string u = tickets[i][0]; string v = tickets[i][1]; graph[u].insert(v); } visit("Chennai"); reverse(ret.begin(), ret.end()); return ret; } void visit(string airport){ while(graph[airport].size()){ string x = *(graph[airport].begin()); graph[airport].erase(graph[airport].begin()); visit(x); } ret.push_back(airport); } }; main(){ Solution ob; vector<vector<string>> v = {{"Mumbai", "Kolkata"}, {"Chennai", "Mumbai"}, {"Delhi", "Bangalore"}, {"Kolkata", "Delhi"}}; print_vector(ob.findItinerary(v)); }
इनपुट
{{"Mumbai", "Kolkata"}, {"Chennai", "Mumbai"}, {"Delhi", "Bangalore"}, {"Kolkata", "Delhi"}}
आउटपुट
[Chennai, Mumbai, Kolkata, Delhi, Bangalore, ]